Android アプリで使用するために ffplay バイナリを入手しようとしています。しかし、configure スクリプトを実行すると、sdl2 もクロスコンパイルし、そのヘッダーとライブラリ フラグを --extra-cflags と --extraldflags に設定したにもかかわらず、sdl2 が見つからないというメッセージが表示されます。--enable-sdl2 を削除すると、ビルドするプログラムの一覧に ffplay が表示されなくなります。release/3.2 ブランチでコンパイルできましたが、ffplay または libavutil.so ファイル (共有フラグや静的フラグによって異なります) の 'main' への未定義参照に関するエラーが発生します。次に、マスター ブランチの configure ファイルで 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
追記:これらの行を configure ファイルに記述することで実行可能ファイルを取得できましたが、この方法で構築された 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