2014-04-13 33 views
1

我正在爲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 
+0

它只是建立爲x_86!即使我將build_x86更改爲build_arm。 –

回答