在Mac OSx中链接.a文件

时间:2014-08-14 07:51:07

标签: macos terminal dylib .a

我在/ usr / lib中添加了libxxx.a但是当我执行otool -L myproject.so时,libxxx.a没有包含在库列表中。我还在我的构建文件中包含了libxxx.a,所以我认为我已经成功添加了它。

我怎么能喜欢.a文件?

我的.dylib文件没有问题。

1 个答案:

答案 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是专为特定于站点的系统添加而设计的,文件将在操作系统更新后继续存在。