存储库的路径.需要最佳实践

Path to store libraries. Best practice needed

本文关键字:最佳 路径 存储      更新时间:2023-10-16

我计划在Linux下用C和C++做几个项目。在某些项目中,我需要额外的库。如果我错了,请纠正我。我打算将库存储在/usr/local/include.但是将所有库混合在一个目录中是好的做法吗?也许最好在目录中创建库名称子目录/usr/local/include?也许最好将标头和源存储在不同的目录中?需要最佳做法。

如何处理未编译的库,例如MiniIni https://code.google.com/p/minini/。它带有头文件和C文件。我应该编译它并放入/lib目录和标头以/include.或者也许最好将所有内容都放在/include 中?

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

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

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

我希望你不要将库存储在/usr/local/include 中。它们属于/usr/local/lib 或可能的/usr/local/lib64。

单个项目所需的标头不应进入/usr/local/include,它们应保留在项目中。只把东西放到/usr/local/lib 和/usr/local/include 中,如果你正在构建一个要包含在几个项目中的库。即便如此,我也会将标头保留在项目的本地,并且仅将它们复制到/usr/local/include 作为构建过程的一部分。

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

现在来谈谈使用子目录的问题。将所有库混合在一个目录中从来都不是一个好的做法。因此,更好的方法是拥有子目录,然后使用"相对"路径引用相应的文件。

我建议将所有库存储在自定义库目录中。

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

像这样,您的工作在您的系统中是非侵入性的,并且不会破坏它。