5

在 Xcode 4.3.2 中,构建一个 iPad 应用程序,其中包括libavutil.affmpeg 发行版,它可以正确构建和运行,但是当我尝试运行单元测试(Cmd-U)时,我收到以下链接器错误:

ld: 非法文本重定位到 /myPath/libavutil.a(imgutils.o) 中的 cstring 从 /myPath/libavutil.a(imgutils.o) 中的 _av_image_check_size 用于架构 armv7 clang: 错误:链接器命令失败,退出代码 1(使用-v 查看调用)

这是在设备上(我们目前无法在模拟器中运行它,因为我们没有包含所有库的胖二进制文件)。

为什么在运行单元测试时它会正常构建和运行但不能链接?

4

4 回答 4

11

答案,来自这里

是添加:

-read_only_relocs suppress

到链接器标志。

另一个链接解释了原因。解决方案最初是在这里找到的。

于 2012-07-05T23:05:36.613 回答
3

具体来说,专门用于修复与ffmpegfor 32bit OSXlink using类似的链接错误的行xcode/c++11是添加-Wl,-read_only_relocs,suppress到链接行。这种变化没有奏效。

于 2013-12-21T18:50:13.807 回答
2

我通过在 XCode 中的编译器和链接器设置中启用与位置无关的代码来解决此链接器错误。

于 2015-06-12T16:27:41.173 回答
1

对于那些已阅读上述答案但没有帮助的人,请检查您的“产品 -> 方案 -> 编辑方案”。对于模拟器应该是“调试”,对于设备来说没关系。否则你会得到奇怪的错误,比如它看不到你项目的某些部分。

于 2019-09-02T08:53:18.730 回答