3

I'm planing to make several projects in C and C++ under Linux. In some projects I will need additional libraries. Correct me if I'm wrong. I'm planning to store libs in /usr/local/include. But is it good practice to mix all libs in one directory? Maybe it is better to create libs name subdirectories in /usr/local/include directory? And maybe it is better to store headers and source in different directories? Best practice is needed.

How to deal with not compiled libs like for example MiniIni https://code.google.com/p/minini/. It comes with header and C files. Should I compile it and place in /lib directory and headers to /include. Or maybe it is better place everything in /include?

4

4 回答 4

3

如果您谈论库,我假设您的意思是编译的库(.so文件或.a文件)。那些应该进入/usr/local/lib/。标题应该进入/usr/local/include. 源.cpp文件通常不应该放在安装的任何地方。有时需要安装它们,以便可以按需重建它们(想到 dkms)。然后来源应该进入/usr/local/src/project_name/

/usr/local/include我个人更喜欢将头文件和库安装在and的子目录中/usr/local/lib,但不是每个人都会同意。

/usr/local前缀始终应该是可配置的。虽然传统make install应该使用它作为默认值,但发行版上的打包程序肯定会将其更改为直接安装到/usr.

于 2013-12-17T09:09:54.623 回答
1

我希望您没有将库存储在 /usr/local/include 中。它们属于 /usr/local/lib 或可能属于 /usr/local/lib64。

单个项目所需的标头不应进入 /usr/local/include,它们应保留在项目中。如果您正在构建要包含在多个项目中的库,则仅将内容放入 /usr/local/lib 和 /usr/local/include 中。即使那样,我也会将标头保留在项目的本地,并且仅将它们复制到 /usr/local/include 作为构建过程的一部分。

至于项目树中的相同目录或不同目录,这取决于项目有多大。当文件数量(源 + 包含)开始超过 20 时,我通常会开始将内容移动到单独的目录中。

于 2013-12-17T09:10:31.613 回答
0

现在来回答您使用子目录的问题。将所有库混合在一个目录中从来都不是一个好习惯。所以更好的方法是拥有子目录,然后使用“相对”路径引用相应的文件。

于 2013-12-17T09:13:32.180 回答
0

我建议将所有库存储在 customlib 目录中。

将 LD_LIBRARY_PATH 环境变量设置为此目录或使用 -L 选项,如果使用 gcc(例如对于 minini)。

像这样,您的工作不会侵入您的系统,也不会破坏它。

于 2013-12-17T13:26:15.427 回答