将库安装到 /usr/local/lib 内的子目录?

将库安装到 /usr/local/lib 内的子目录?

我有一个自己的大型库,其中包含许多组件或“子模块”(类似于 boost 有许多组件),我正在 CMake 中为其设置安装规则。

假设我的库名为 myLib 版本 1.2.3。我的问题是,由于我的库将由于多个组件而产生许多文件.a或输出文件,因此将这些文件安装到例如到或中的子文件夹中是否可以接受?.so/usr/local/lib//usr/local/lib/myLib//usr/local/lib/myLib-1.2.3/

我通常是一名 Windows 开发人员,但使用双引导 Ubuntu,并且希望 Unix 上的其他开发人员能够尽可能轻松地安装我的库。

我注意到将libboost-all-dev所有文件直接安装到 中/usr/local/lib/,但是我发现这会使 lib 文件夹变得非常混乱。如果我向这个包含许多库文件的文件夹“添加混乱”,这有什么关系吗?

另外,我正在考虑我的库文件是否应该在标题中包含版本。这样做的标准是什么?例如myLib-1.2.3.avs myLib.a。我知道这与主要问题有点偏离主题,但如果我直接安装到 lib 文件夹,那么在文件等中包含版本号可能会更有利,所以我认为它略有相关。

另外 - 如果这是错误的线程,我深表歉意,因为我知道它与软件工程密切相关,但我认为它与 Linux 文件夹结构的关系比其他任何东西都大!

答案1

如果您希望将库安装在系统 lib 目录之外的任何位置,并让其他用户访问它们,则创建一个文本文件,其中/etc/ld.so.conf.d/包含您放置库的目录,然后运行ldconfig​​.如果不存在冲突,系统将正确选择您的库。除了向编译器/链接器提供-l/设置之外,不需要搞乱编译器和链接器设置-L

相关内容