我正在爲android構建ffmpeg。它可以在arm上正常工作,但在x86下失敗。android ffmpeg爲多個拱門
編譯沒問題。但是,如果我運行它使用的ffmpeg x86的lib中的APK,logcat會出現以下錯誤:
04-13 10:30:09.862: E/dalvikvm(1262): dlopen("/data/app-lib/com.misgood.ipcamdemo-2/libplayer.so") failed: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libavformat-55.so" needed by "libplayer.so"; caused by load_library(linker.cpp:745): library "libavformat-55.so" not found
我會檢查apk文件。所有共享庫都存在。
我想問題是庫配置不正確。
任何建議,將不勝感激。
這裏是我使用的ffmpeg建設爲Android手臂和x86
#!/bin/bash
NDK=$HOME/android-ndk-r9c
function build_core
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--disable-error-resilience \
--disable-decoder=h263p \
--disable-decoder=mpegvideo \
--target-os=linux \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-std=c99 -O3 -fpic -DANDROID $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ARCH_SPEC \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make -j4
make install
}
function build_arm
{
SYSROOT=$NDK/platforms/android-19/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
ARCH_SPEC="--arch=arm \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
"
build_core
}
function build_x86
{
SYSROOT=$NDK/platforms/android-19/arch-x86/
TOOLCHAIN=$NDK/toolchains/x86-4.8/prebuilt/linux-x86_64
CPU=x86
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-mincoming-stack-boundary=4 -march=i686 -mtune=atom -mstackrealign -msse3 -mfpmath=sse -m32"
ARCH_SPEC="--arch=x86 \
--cross-prefix=$TOOLCHAIN/bin/i686-linux-android- \
--cpu=i686
"
build_core
}
build_x86
它只是建立爲x_86!即使我將build_x86更改爲build_arm。 –