架构x86_64的未定义符号:Mac OS 10.8

时间:2013-06-13 17:07:41

标签: macos gcc ant ld llvm-gcc

所以一般来说,我知道这个错误意味着什么。但这是我的问题所特有的 -

  1. 我的(静态)库中包含链接器无法找到的符号。我运行'nm'来验证这一点,明确地寻找x86_64符号。他们在那里。
  2. 但是 - 我在同一个位置也有一个同名的动态库。我的猜测是链接器正在抓取.dylib,而不是.a,因此无法找到所需的符号。
  3. 我确实找到了这篇关于强制静态链接的帖子,当你有静态&具有相同名称的动态库 - How can I force linking with a static library when a shared library of same name is present

    问题是我正在使用Ant构建脚本并尝试了一些不同的东西来将解决方案合并到上面的帖子中,但没有取得多大成功。

    所以我的问题是 -

    1. 我的预感是否正好在上面#2中,因为图书馆名称导致“未命中”?
    2. 有人知道Ant脚本解决方案吗?我在Ant中尝试过的一些事情是 -
      一个。 “linkerarg value =”static“”< - 问题是它试图为crt0.o找到一个静态库。

      湾“linkerarg value =”static“”后跟 “linkerarg value =”llibname“”
    3. UPDATE - 关于链接器拾取.dylib而不是.a - 我是正确的 - 我将静态库(.a)重命名为其他内容并且能够找到所有符号需要。现在的问题是 - 我们如何明确地指示Ant脚本获取.a而不是.dylib?

      ANSWER - 一个名为 force_load 的链接器标志。所以-force_load filename.a会这样做。

1 个答案:

答案 0 :(得分:0)

它是一个名为* force_load *的链接器标志。所以-force_load filename.a会这样做。