所以一般来说,我知道这个错误是什么意思。但这是我的问题的独特之处 -
- 我确实有带有链接器无法找到的符号的(静态)库。我运行了“nm”来验证这一点,明确地寻找 x86_64 符号。他们在那里。
- 但是 - 我在同一个位置也有一个同名的动态库。我的猜测是链接器正在抓取.dylib,而不是.a,因此它无法找到它需要的符号。
我确实找到了这篇关于当你有同名的静态和动态库时强制静态链接的帖子 -当存在同名的共享库时,如何强制链接静态库。
问题是我正在使用 Ant 构建脚本并尝试了一些不同的方法来将解决方案合并到上面的帖子中,但没有取得多大成功。
所以我的问题是——
- 我的预感在上面的#2中是否正确,因为库名称会导致“错过”?
- 有谁知道对此的 Ant 脚本解决方案?我在 Ant 中尝试过的一些事情是 -
一个。"linkerarg value="static"" <- 问题是它试图为 crt0.o
b 找到一个静态库。"linkerarg value="static"" 后跟 "linkerarg value="llibname""
更新- 我对链接器选择 .dylib 而不是 .a 是正确的 - 我将静态库 (.a) 重命名为其他内容,并且它能够找到它需要的所有符号。现在的问题是——我们如何明确指示 Ant 脚本选择 .a 而不是 .dylib?
答案- 它是一个名为force_load的链接器标志。所以 -force_load filename.a 会这样做。