Как кросс-компилировать ffplay для Android на Ubuntu?
Я пытаюсь получить бинарный файл ffplay, чтобы использовать его в своем приложении для Android. Но когда я запускаю свой скрипт configure, он говорит, что sdl2 в not found, хотя я тоже кросс-компилировал его и поместил его заголовки и флаги библиотеки в --extra-cflags и --extraldflags. Если я удалю --enable-sdl2, ffplay просто не появится в списке программ для сборки. Мне удалось заставить его скомпилироваться в ветке release / 3.2, но он выдает ошибку относительно неопределенной ссылки на 'main' в эфирных файлах ffplay или libavutil.so (в зависимости от общих и / или статических флагов). Затем я отредактировал переменные 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, созданные таким образом, не работают. Их процессы завершаются с кодом 132, который связан с испорченным двоичным файлом AFAIK. Я до сих пор не знаю, как заставить их работать.
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
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4