【发布时间】:2016-04-02 05:56:21
【问题描述】:
我在 Android 上使用共享库构建了 ffmpeg 可执行二进制文件。但是当我在Marshmallow 上运行它时,出现以下错误,可执行文件无法运行。
$ LD_LIBRARY_PATH=./lib ./bin/ffmpeg
CANNOT LINK EXECUTABLE: cannot find "libavformat.so" from verneed[0] in DT_NEEDED list for "./bin/ffmpeg"
page record for 0xb6eee00c was not found (block_size=16)
我在编译二进制文件时已经添加了--extra-ldexeflags="-pie"。
可执行二进制文件在Marshmallow 之前的设备上正常运行。
我以前没有遇到过这样的问题,是我错过了什么重要的事情吗?如何使这个二进制文件在 Marshmallow 上工作?
有关我的环境的更多信息。
我用android-ndk-r10e 和
SYSROOT=$ANDROID_NDK_ROOT/platforms/android-19/arch-arm 和工具链版本是
arm-linux-androideabi-gcc (GCC) 4.9 20140827 (prerelease)
如果我将ffmpeg 构建到单个可执行二进制文件中(构建静态库,然后构建到二进制文件中),它可以正常运行。
【问题讨论】:
标签: android ffmpeg android-ndk cross-compiling android-6.0-marshmallow