【问题标题】:Linking .a files in Mac OSx在 Mac OSx 中链接 .a 文件
【发布时间】:2014-10-07 18:59:16
【问题描述】:

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

我怎样才能喜欢 .a 文件?

不过,我对 .dylib 文件没有问题。

【问题讨论】:

  • 不是你眼前的问题,但为了将来参考永远不要在 /usr/lib 中安装东西 - 使用 /usr/local/lib。

标签: macos terminal dylib .a


【解决方案1】:

otool 不会显示静态库,因为它们在可执行二进制文件中包含(在本例中为.dylib)。这是因为静态库是对象 (.o) 文件的集合,这与将file1.o ... fileN.o 添加到链接器命令行几乎相同,并且您也无法从otool 看到对象文件。

检查静态库是否是可执行文件的一部分(除了成功链接)的一种方法是使用列出符号的nm 命令。如果可执行二进制文件未被剥离,您可以执行以下操作:

$ nm /path/to/libLibrary.dylib | grep aClassOrFunctionInStaticLibrary

并且被搜索的符号旁边应该有字母t,表示它是可执行文本部分的一部分。

正如@PaulR 所提到的,/usr/lib 是操作系统的一部分,您不应该在其中添加文件;请改用/usr/local/lib,因为/usr/local 是为特定于站点的系统添加而设计的,其中的文件将在操作系统更新后继续存在。

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2014-10-08
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多