我正在尝试构建一个在 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)并链接
与佩雷的事。那么所有代码都将位于同一个链接单元中,
因此不需要运行时文本重新定位。运行时 (dyld)
确实支持 i386 的文本重新定位(更新指令),但是您
需要与 -read_only_relocs 抑制链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)