我想弄清楚安装C和C++代码的简化方法 以及由它们构建的库,主要用于Linux。我想认为 GNU Autotools,CMake等对于我正在尝试做的事情来说是过分的。从Linux上简单安装源代码
一个例子:我写了一些代码,当'make'运行时,建立到 创建一个库'example.a'。 (我将使用静态链接到目前为止 共享库将引入更多的问题;在我走之前我会抓取它。)使用这些函数需要包括'example1.h','example2.h'等。
使用Autotools,可以运行'make install'或'sudo make install'至 将example.a复制到/ usr/local/lib,并将包含文件复制到/ usr/local/include。 如果构建了可执行文件,则会将其复制到/ usr/local/bin。
我尝试添加以下行到我的生成文件:
安装:
CP example.a在/ usr/local/lib目录
CP example1.h在/ usr /本地/包括
CP例题.h/usr/local/include
cp示例/ usr/local/bin
这似乎很有效,主要是。其他项目则可以“看” .h文件并正确构建。但.a文件未找到;唯一可以链接的 的方法是明确指定路径为 /usr/local/lib/example.a。 (尽管gcc坚持认为它在那条路径上寻找库 )。所以:
问题1:我的用户构建的库应该放在/ usr/local/lib中吗?还是我 我使用错误的目录?
现在,我的下一个问题是:这必须用'sudo make install'来完成。 我在考虑对于这个类似的项目,其中只有一个用户将 利用有问题的代码,库应该去 ,如$ HOME/lib,包括文件到$ HOME/include,可执行文件到 $ HOME/bin。
问题2:是否有一种“标准”方式为当前用户安装 包括/库,而不是为所有用户安装? (从而避免 根使用的需要,我认为这将是一个“干净”的系统,如果只使用 该程序的用户不得不处理这些文件。)
谢谢。没有听说过“安装”,但“安装人员”让我加快速度。重命名为'libexample.a'没有帮助;我会继续调查。你对每个用户设置的建议似乎是合理的,尽管我觉得奇怪的是没有一个更“标准”的方法来做到这一点......当然,我不是第一个遇到这种情况? –
/usr/local/lib适合我。我添加了一个例子。 – PSkocik
啊,我看到我疯狂的地方(和'man ld',看着-l选项证实了这一点):该文件必须命名为'libfoo.a'。然后可以使用'-lfoo',ld将在前面加上lib,后面加上.a。 _或者你可以使用'-l:libfoo.a',它会直接处理它。再次感谢;这是相当莫名其妙的... –