我正在尝试构建一个在xcode 4中使用ffmpeg的libav *库并获得以下错误的简单应用程序:
ld:非法文本从/ffmpeg/temp/ffmpeg-0.8/builduni/lib/libavcodec.a(ac3.o)中的non_lazy_ptr重新定位到_ff_ac3_bit_alloc_calc_psd中的架构i386
我已经尝试运行ranlib -c libavcodec.a来解决这个问题,但没有任何事情发生。 还有一件事:我的libav *库是胖二进制文件(i386 + x86_64)。
任何想法可能是什么?
答案 0 :(得分:4)
我有同样的错误。最后,我得到了解决方案 http://lists.apple.com/archives/unix-porting/2008/Jan/msg00027.html
只需添加其他链接标记:
-read_only_relocs suppress
* EXPLANATION * 两个汇编命令将_trail的绝对地址加载到R15中。如果最终_trail,那么这样做很好 在同一个联动单位。 _trail位于libmodule.dylib中。为了这个 工作,在运行时动态加载器(dyld)将不得不重写 两条指令。通常dyld只更新数据指针。一项工作 周围是使libdyalog成为一个档案(例如libdyalog.a)和链接 与pere.s.然后所有代码都在同一个链接单元中, 所以不需要运行时文本重定位。运行时(dyld) 确实支持i386的文本重定位(更新说明),但是你 需要链接-read_only_relocs suppress。