如何在Ubuntu上交叉編譯Android版ffplay?

如何在Ubuntu上交叉編譯Android版ffplay?

我正在嘗試獲取 ffplay 二進位檔案以在我的 Android 應用程式中使用它。但是當我運行配置腳本時,它說找不到 sdl2,儘管我也交叉編譯了它並將其標頭和庫標誌放入 --extra-cflags 和 --extraldflags。如果我刪除 --enable-sdl2 ffplay 就不會出現在要建置的程式清單中。我設法讓它在 release/3.2 分支上進行編譯,但它會拋出一個錯誤,涉及以太 ffplay 或 libavutil.so 文件中對“main”的未定義引用(取決於共享和/或靜態標誌)。然後我在 master 分支上的設定檔中編輯 sdl2_cflags 和 sdl2_extralibs 變數以指向我的函式庫,但無論如何它都不會編譯。
我究竟做錯了什麼?

我的設定檔已這樣更改:

if enabled sdl2; then
    sdl2_cflags="-I/home/kondenko/Android/ffmpeg/ffmpeg/sdl2/include -D_REENTRANT"
    sdl2_extralibs="-L/home/kondenko/Android/ffmpeg/ffmpeg/sdl2/build/android/obj/local/armeabi-v7a -lSDL2"
    enable sdl2
fi

這是我的腳本:

make_or_die() {
    make -j $(nproc) || exit
    sudo make install || exit
}

ARCH=arm
API=17
CPU=armv7

WORKING_DIR=~/Android/ffmpeg/ffmpeg

NDK=~/Android/SDK/ndk
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi
SYSROOT=$TOOLCHAIN/sysroot
CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi- 

FFMPEG_PREFIX=$(pwd)/android/$CPU 

SDL=$(pwd)/sdl2
SDL_PREFIX=$SDL/build/android/obj/local/armeabi-v7a

export PATH=$PATH:$TOOLCHAIN/bin:$TOOLCHAIN/include
export CC="arm-linux-androideabi-clang"
export CXX="arm-linux-androideabi-clang++"

build_sdl2() {
    hg clone https://hg.libsdl.org/SDL $SDL
    cd $SDL
    sudo ./build-scripts/androidbuildlibs.sh
    cd $WORKING_DIR
    echo "SDL build folder: $SDL_PREFIX"
}

build_ffmpeg() {
    sudo make distclean
    sudo ./configure \
        --target-os=android \
        --arch=$ARCH \
        --prefix=$FFMPEG_PREFIX \
        --cross-prefix=$CROSS_PREFIX \
        --enable-static \
        --disable-ffprobe \
        --disable-ffmpeg \
        --disable-doc \
        --disable-symver \
        && make_or_die && header "Success! Your files are at $FFMPEG_PREFIX" \
        || (echo \\n && tail ffbuild/config.log && exit)
}

build_sdl2
build_ffmpeg

更新:我已經設法將這些行放入配置文件中以獲得可執行文件,但是以這種方式構建的 ffmpeg 和 ffplay 都不起作用。他們的進程以代碼 132 退出,據我所知,該代碼與損壞的二進位有關。我仍然不知道如何讓他們工作。

sdl2_cflags="-I/home/kondenko/Android/ffmpeg/ffmpeg/sdl2/include -D_REENTRANT"
sdl2_extralibs="/home/kondenko/Android/ffmpeg/ffmpeg/sdl2/build/android/lib/armeabi-v7a/libSDL2.so /home/kondenko/Android/ffmpeg/ffmpeg/sdl2/build/android/obj/local/armeabi-v7a/libSDL2.a /home/kondenko/Android/ffmpeg/ffmpeg/sdl2/build/android/obj/local/armeabi-v7a/libSDL2main.a -llog -landroid -ldl -lGLESv1_CM -lGLESv2 -shared"
enable sdl2

相關內容