내 Android 앱에서 사용하기 위해 ffplay 바이너리를 구하려고 합니다. 하지만 구성 스크립트를 실행하면 sdl2를 크로스 컴파일하고 헤더와 라이브러리 플래그를 --extra-cflags 및 --extraldflags에 넣었음에도 불구하고 sdl2를 찾을 수 없다는 메시지가 나타납니다. --enable-sdl2 ffplay를 제거하면 빌드할 프로그램 목록에 표시되지 않습니다. release/3.2 브랜치에서 컴파일하도록 관리했지만 ether ffplay 또는 libavutil.so 파일에서 'main'에 대한 정의되지 않은 참조와 관련된 오류가 발생합니다(공유 및/또는 정적 플래그에 따라 다름). 그런 다음 마스터 브랜치의 구성 파일에서 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
UPD:구성 파일에 이 줄을 넣어 실행 파일을 얻었지만 이런 방식으로 구축된 ffmpeg나 ffplay는 모두 작동하지 않습니다. 해당 프로세스는 손상된 바이너리 AFAIK와 관련된 코드 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