您好,我成功构建了 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
这些问题似乎相关,但没有帮助:
Android 中的“ffmpeg 有文本重定位”错误 https://stackoverflow.com/questions/27774654/ffmpeg-has-text-relocations-error-in-android
libavcodec.so:具有文本重定位 https://stackoverflow.com/questions/32346402/libavcodec-so-has-text-relocations
我该如何解决这个问题?
这应该已经修复(因为提交https://git.libav.org/?p=libav.git;a=commitdiff;h=f963f80399d https://git.libav.org/?p=libav.git;a=commitdiff;h=f963f80399d,2014 年 12 月),所以请确保您构建了一个足够新的版本,它应该没问题。
arm、aarch64 和 x86_64 在没有文本重定位的情况下应该都能正常工作,但对于 32 位 x86,你无法轻易避免它。 (对于 x86,最简单的方法是--disable-asm
,但这确实会带来相当多的性能损失。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)