单元测试时链接器错误:ld:非法文本重定位到...中的cstring ...来自... / libavutil.a中的_av_image_check_size(imgutils.o)

时间:2012-07-03 19:15:31

标签: ios unit-testing xcode4.3 linker-errors libav

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

  对于体系结构armv7 clang,

ld:来自/myPath/libavutil.a(imgutils.o)中的_av_image_check_size的/myPath/libavutil.a(imgutils.o)中的cstring的非法文本重定位:错误:链接器命令失败并带有退出代码1(使用-v查看调用)

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

为什么它会正常构建和运行,但在运行单元测试时却没有链接?

4 个答案:

答案 0 :(得分:10)

答案来自here

是添加:

-read_only_relocs suppress

到链接器标志。

另一个链接解释了原因。该解决方案最初被发现here

答案 1 :(得分:3)

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

答案 2 :(得分:2)

具体而言,使用ffmpeg专门用于修复32bit OSX xcode/c++11 -Wl,-read_only_relocs,suppress的类似链接错误的行是将{{1}}添加到链接线。这种变化无效。

答案 3 :(得分:1)

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