我在/ usr / lib中添加了libxxx.a但是当我执行otool -L myproject.so时,libxxx.a没有包含在库列表中。我还在我的构建文件中包含了libxxx.a,所以我认为我已经成功添加了它。
我怎么能喜欢.a文件?
我的.dylib文件没有问题。
答案 0 :(得分:1)
otool
不会显示静态库,因为它们在可执行二进制文件中包含 (在本例中为.dylib
)。这是因为静态库是对象(.o
)文件的集合,它与将file1.o ... fileN.o
添加到链接器命令行几乎相同,并且您无法从otool
看到对象文件无论是。
检查静态库是可执行文件的一部分(除了成功链接之外)的一种方法是使用列出符号的nm
命令。提供可执行二进制文件不是剥离,您可以执行以下操作:
$ nm /path/to/libLibrary.dylib | grep aClassOrFunctionInStaticLibrary
并且被搜索的符号旁边应该有t
字母,表示它是可执行文件 text 部分的一部分。
同样如@PaulR所述,/usr/lib
是操作系统的一部分,你不应该在那里添加文件;使用/usr/local/lib
而不是/usr/local
是专为特定于站点的系统添加而设计的,文件将在操作系统更新后继续存在。