android - 适用于 Android 的 ffmpeg : neon build has text relocations

标签 android c++ ffmpeg android-ndk neon

您好,我成功构建了包含 arm-v7a neon 支持的 appunite ffmpeg 库,但是当我尝试在我的 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

当我使用非 neon 构建时,它可以正常工作。

所以我在谷歌上搜索了一下,发现这可能是相应 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

我该如何解决?

最佳答案

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

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

关于android - 适用于 Android 的 ffmpeg : neon build has text relocations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34691970/

相关文章:

java - 如何制作可以更改 Android 用户界面字体的应用程序?

java - 如何在 RecyclerView 中设置负边距装饰?或者为什么这是不可能的?

c++ - 将 map 键与 comboBox.currentText() 进行比较时应用程序崩溃;

ffmpeg - 我们如何在 ffmpeg 中合并 .cdg 和 .mp3 文件

ffmpeg 旋转图像以馈送 ffserver

java - 安卓/ Gradle : specify a dependency for a subset of build types

java - 哪个 api/sdk 在 Android 平台上从帐户/页面获取图像简单且有用?

c++ - QString 与 QTextStream 的所有权

c++ - 使用预处理器指令来定义美元符号代表什么会导致任何冲突吗?

python - 从 python 代码流式传输视频(ffmpeg)