Xcode4 使用libav*库在xcode 4中构建时,非法文本重新链接到非_lazy_ptr错误

Xcode4 使用libav*库在xcode 4中构建时,非法文本重新链接到非_lazy_ptr错误,xcode4,ffmpeg,linker-errors,libav,non-lazy-ptr,Xcode4,Ffmpeg,Linker Errors,Libav,Non Lazy Ptr,我正在尝试构建一个简单的应用程序,该应用程序在xcode 4中使用ffmpeg的libav*库,但出现以下错误: ld:architecture i386的/ffmpeg/temp/ffmpeg-0.8/builduni/lib/libavcodec.a(ac3.o)中的非法文本重新链接到非惰性ptr 我已经尝试运行ranlib-c libavcodec.a来修复这个问题,但是没有任何结果。 还有一件事:我的libav*库是胖二进制文件(i386+x86_64) 有什么想法吗?我也有同样的错误。

我正在尝试构建一个简单的应用程序,该应用程序在xcode 4中使用ffmpeg的libav*库,但出现以下错误:

ld:architecture i386的/ffmpeg/temp/ffmpeg-0.8/builduni/lib/libavcodec.a(ac3.o)中的非法文本重新链接到非惰性ptr

我已经尝试运行ranlib-c libavcodec.a来修复这个问题,但是没有任何结果。 还有一件事:我的libav*库是胖二进制文件(i386+x86_64)


有什么想法吗?

我也有同样的错误。最后,我终于找到了答案

只需添加其他链接标志:

-read_only_relocs suppress
*解释*这两个汇编命令将_trail的绝对地址加载到R15中。这样做是好的,如果_trail最终 在同一联动装置中_trail位于libmodule.dylib中。为了这个 工作时,动态加载程序(dyld)必须在运行时重写 两个指令。通常dyld只更新数据指针。一件作品 其目的是使libdyalog成为一个归档文件(例如libdyalog.a)和链接 那是佩雷的。那么所有的代码都在同一个联动装置中, 因此,不需要运行时文本relocs。运行时(dyld) 确实支持i386的文本relocs(更新说明),但是 需要链接-read_only_relocs suppress


我在这里发现了类似的问题,但添加fvisibility=hidden也没有帮助:(