我编译了一个静态C或C++库,获得了一个libfoo.a
。我想决定它建成后应该安装在哪里。不要介意我使用的是什么构建/安装机制——这是一个原则问题。
现在,在安装根目录(可能是/usr
或/usr/local
等(上,有两个子目录感兴趣:lib/
,以及一个目录,其名称取决于处理器体系结构、内核类型和用户区类型,例如x86_64、Linux和GNU,用于lib/x86_64-linux-gnu
。
我用x86_64对象代码编译了这个库,并使用了Linux版本的glibc;但是,所有的库基本上都是这样编译的。那么,我如何决定我的库应该只进入lib/
,还是更确切地说是lib/x86_64-linux-gnu
?
注意:如果我使用的是非Debian发行版,那么困境可能会在lib/
和lib64/
之间——这基本上仍然是相同的困境。
lib/x86_64-linux-gnu
命名方案特定于基于Debian的发行版,用于支持multiarch。许多其他发行版仍在使用文件系统层次结构标准,该标准使用/lib
、/lib32
、/lib64
等,而不是lib/x86_64-linux-gnu
约定。
虽然已经有一些工作将Debian命名方案纳入标准,但它还没有真正得到解决。因此,遵循你包装的分销惯例可能会更好。
在这种情况下,这似乎意味着根据Debianwiki将共享库放入相应体系结构的子目录中。