我有一个自己的大型库,其中包含许多组件或“子模块”(类似于 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.a
vs myLib.a
。我知道这与主要问题有点偏离主题,但如果我直接安装到 lib 文件夹,那么在文件等中包含版本号可能会更有利,所以我认为它略有相关。
另外 - 如果这是错误的线程,我深表歉意,因为我知道它与软件工程密切相关,但我认为它与 Linux 文件夹结构的关系比其他任何东西都大!
答案1
如果您希望将库安装在系统 lib 目录之外的任何位置,并让其他用户访问它们,则创建一个文本文件,其中/etc/ld.so.conf.d/
包含您放置库的目录,然后运行ldconfig
.如果不存在冲突,系统将正确选择您的库。除了向编译器/链接器提供-l
/设置之外,不需要搞乱编译器和链接器设置-L
。