我正在尝试构建一个在xcode 4中使用ffmpeg的libav *库的简单应用程序,并收到以下错误:
ld:对于架构i386,从_ff_ac3_bit_alloc_calc_psd中的/ffmpeg/temp/ffmpeg-0.8/builduni/lib/libavcodec.a(ac3.o)中的非法文本重定位到non_lazy_ptr
我已经尝试运行ranlib -c libavcodec.a来解决此问题,但是没有任何反应。
还有一件事:我的libav *库是胖二进制文件(i386 + x86_64)。
有什么想法吗?
最佳答案
我有同样的错误。最后,我找到了解决方案
http://lists.apple.com/archives/unix-porting/2008/Jan/msg00027.html
只需添加其他链接标志:
-read_only_relocs suppress
*说明*这两个汇编命令将_trail的绝对地址加载到R15中。如果_trail最终可以这样做
在同一链接单元中。 _trail在libmodule.dylib中。为此
工作时,动态加载程序(dyld)在运行时必须重写
两条指令。通常dyld仅更新数据指针。一件作品
周围是使libdyalog成为归档文件(例如libdyalog.a)并链接
与pere.s.然后所有代码都将在同一链接单元中,
因此,不需要运行时文本重定位。运行时(模型)
确实支持i386的文本重定位(更新说明),但是您
需要与-read_only_relocs抑制链接。
关于xcode4 - 使用libav *库在xcode 4中构建时,非法文本重定位到non_lazy_ptr错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6650178/