ffmpeg for Android:neon build有文本重定位

时间:2016-01-09 09:48:20

标签: android c++ ffmpeg android-ndk neon

您好我成功构建了appunite ffmpeg库,包括arm-v7a neon支持,但是当我尝试在Marshmallow设备上运行库时出现此错误:

01-08 23:42:02.350: E/AndroidRuntime(10144): java.lang.UnsatisfiedLinkError:
 dlopen failed: /data/app/com.example.demo-1/lib/arm/libffmpeg-neon.so: has text relocations

当我使用非霓虹灯构建时,它没有任何问题。

所以我用Google搜索了一下,发现这可能是相应的C / C ++代码中的一个错误,但另一方面它应该在使用NDK v.10e重建时修复。这就是我做的。但我仍然得到这些文本重定位:

~/Projekte/AndroidFFmpeg$ /usr/Android/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-readelf -a library/src/main/jniLibs/armeabi-v7a/libffmpeg-neon.so  | grep TEXTREL
 0x00000016 (TEXTREL)                    0x0
 0x0000001e (FLAGS)                      SYMBOLIC TEXTREL

这些问题似乎是相关的,但没有帮助:

"ffmpeg has text relocations" error in Android

libavcodec.so: has text relocations

我该如何解决?

1 个答案:

答案 0 :(得分:5)

这应该已经修复(自2014年12月提交https://git.libav.org/?p=libav.git;a=commitdiff;h=f963f80399d以来),因此请确保构建一个足够新的版本,它应该没问题。

arm,aarch64和x86_64在没有文本重定位的情况下都可以正常工作,但对于32位x86,你不能轻易避免它。 (对于x86,最简单的方法是执行--disable-asm,但这确实会带来相当多的性能损失。)