Arm-linux-androideabi-gcc не может создать исполняемый файл – компиляция ffmpeg для устройств android armeabi

Я пытаюсь скомпилировать ffmpeg для устройств android armeabi.
Я следую учебнику от roman10.net
Его сценарий сборки создает ffmpeg для устройств armv7-a. Я хочу построить его для армейцев.

Моя конечная цель – запустить команды ffmpeg на устройствах android armeabi и armv7-a.

Поэтому я меняю часть процессора на скрипт

#arm v7vfpv3 CPU=armv7-a OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU " PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG= build_one 

в

 #arm v6 CPU=armv6 OPTIMIZE_CFLAGS="-marm -march=$CPU" PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG= build_one 

(Я думал, что сменить его на armv6 будет строить ffmpeg, совместимый с устройствами armeabi. Я ошибаюсь?)

Сомнение 1:
Нужно ли мне также менять инструментальную цепочку?
Т.е. от arm-linux-androideabi-4.4.3 до arm-eabi-4.4.0 ?????

Сомнение 2:

Когда я пытаюсь запустить ./build.sh (без изменения инструментальной цепочки), он вызывает следующую ошибку:

 /home/chaitanya/android/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc is unable to create an executable file. C compiler test failed. If you think configure made a mistake,.. blaah blahh blaah 

После этого у меня появилось много предупреждений:
«Sub_id» устарел и многие другие устаревшие предупреждения.

Платформа : ubuntu 11.10
Версия ffmpeg : 0.11.2
NDK : android-ndk-r5b

Вот мой скрипт сборки:

 #!/bin/bash ###################################################### # Usage: # put this script in top of FFmpeg source tree # ./build_android # It generates binary for following architectures: # ARMv6 # ARMv6+VFP # ARMv7+VFPv3-d16 (Tegra2) # ARMv7+Neon (Cortex-A8) # Customizing: # 1. Feel free to change ./configure parameters for more features # 2. To adapt other ARM variants # set $CPU and $OPTIMIZE_CFLAGS # call build_one ###################################################### NDK=~/android/android-ndk-r5b PLATFORM=$NDK/platforms/android-8/arch-arm/ PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86 function build_one { ./configure --target-os=linux \ --prefix=$PREFIX \ --enable-cross-compile \ --extra-libs="-lgcc" \ --arch=arm \ #--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \ --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \ #--nm=$PREBUILT/bin/arm-linux-androideabi-nm \ --sysroot=$PLATFORM \ --extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS " \ --disable-shared \ --enable-static \ --extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \ --disable-everything \ --enable-demuxer=mov \ --enable-demuxer=h264 \ --disable-ffplay \ --enable-protocol=file \ --enable-avformat \ --enable-avcodec \ --enable-decoder=rawvideo \ --enable-decoder=mjpeg \ --enable-decoder=h263 \ --enable-decoder=mpeg4 \ --enable-decoder=h264 \ --enable-parser=h264 \ --disable-network \ --enable-zlib \ --disable-avfilter \ --disable-avdevice \ $ADDITIONAL_CONFIGURE_FLAG make clean make -j4 install $PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o $PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a } #arm v6 CPU=armv6 OPTIMIZE_CFLAGS="-marm -march=$CPU" PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG= build_one #arm v7vfpv3 #CPU=armv7-a #OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU " #PREFIX=./android/$CPU #ADDITIONAL_CONFIGURE_FLAG= #build_one #arm v7vfp #CPU=armv7-a #OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU " #PREFIX=./android/$CPU-vfp #ADDITIONAL_CONFIGURE_FLAG= #build_one #arm v7n #CPU=armv7-a #OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8" #PREFIX=./android/$CPU #ADDITIONAL_CONFIGURE_FLAG=--enable-neon #build_one #arm v6+vfp #CPU=armv6 #OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU" #PREFIX=./android/${CPU}_vfp #ADDITIONAL_CONFIGURE_FLAG= #build_one компилированные #!/bin/bash ###################################################### # Usage: # put this script in top of FFmpeg source tree # ./build_android # It generates binary for following architectures: # ARMv6 # ARMv6+VFP # ARMv7+VFPv3-d16 (Tegra2) # ARMv7+Neon (Cortex-A8) # Customizing: # 1. Feel free to change ./configure parameters for more features # 2. To adapt other ARM variants # set $CPU and $OPTIMIZE_CFLAGS # call build_one ###################################################### NDK=~/android/android-ndk-r5b PLATFORM=$NDK/platforms/android-8/arch-arm/ PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86 function build_one { ./configure --target-os=linux \ --prefix=$PREFIX \ --enable-cross-compile \ --extra-libs="-lgcc" \ --arch=arm \ #--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \ --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \ #--nm=$PREBUILT/bin/arm-linux-androideabi-nm \ --sysroot=$PLATFORM \ --extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS " \ --disable-shared \ --enable-static \ --extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \ --disable-everything \ --enable-demuxer=mov \ --enable-demuxer=h264 \ --disable-ffplay \ --enable-protocol=file \ --enable-avformat \ --enable-avcodec \ --enable-decoder=rawvideo \ --enable-decoder=mjpeg \ --enable-decoder=h263 \ --enable-decoder=mpeg4 \ --enable-decoder=h264 \ --enable-parser=h264 \ --disable-network \ --enable-zlib \ --disable-avfilter \ --disable-avdevice \ $ADDITIONAL_CONFIGURE_FLAG make clean make -j4 install $PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o $PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a } #arm v6 CPU=armv6 OPTIMIZE_CFLAGS="-marm -march=$CPU" PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG= build_one #arm v7vfpv3 #CPU=armv7-a #OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU " #PREFIX=./android/$CPU #ADDITIONAL_CONFIGURE_FLAG= #build_one #arm v7vfp #CPU=armv7-a #OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU " #PREFIX=./android/$CPU-vfp #ADDITIONAL_CONFIGURE_FLAG= #build_one #arm v7n #CPU=armv7-a #OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8" #PREFIX=./android/$CPU #ADDITIONAL_CONFIGURE_FLAG=--enable-neon #build_one #arm v6+vfp #CPU=armv6 #OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU" #PREFIX=./android/${CPU}_vfp #ADDITIONAL_CONFIGURE_FLAG= #build_one 

Как решить эту проблему? Что происходит не так?

    Я не уверен, что это то, что вы ищете, но я создал скрипт для создания FFmpeg 0.11.1 для Android. Я изменил скрипты, снабженные старыми сборками Bambuser FFmpeg, чтобы заставить их работать с 0.11.1. В настоящее время я использую этот скрипт для сборки FFmpeg в моем собственном приложении, поэтому я знаю, что сборка работает. Сценарий находится по адресу http://servestream.sourceforge.net/build-ffmpeg.sh . Я использую android-ndk-r8b и Ubuntu 12.04 (x64) для создания здания. Чтобы использовать скрипт, выполните следующие действия:

    1.) Загрузите скрипт
    2.) Откройте скрипт и измените переменную PACKAGE в соответствии с пакетом приложения
    3.) Сделайте его исполняемым: chmod + x build-ffmpeg.sh
    4.) Установите переменную NDK, используемую скриптом, например: export NDK = / home / user / android-ndk-r8b
    5.) Запустите скрипт: ./build-ffmpeg.sh

    Скомпилированные двоичные файлы будут расположены во вновь созданной папке «final-builds» в текущем рабочем каталоге. (Примечание: скрипт создает двоичные файлы для армейских, армейских-v7a и x86-архитектур)

    Надеюсь, это ответит на ваш вопрос.

    ОБНОВИТЬ:

    Если скрипт не найден, http://sourceforge.net/p/servestream/code/HEAD/tree/ffmpeg/scripts/arm-build.sh

    Я, наконец, нашел проблему с моей настройкой, столкнувшись с этой проблемой … Посмотрев на скрипт arm-build.sh, я начал следовать сценарию. Обратите внимание на путь «TOOLCHAIN ​​= …».

    Первоначально путь был следующим: TOOLCHAIN ​​= echo $NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/*-x86

    Когда я пошел проверять этот путь, я заметил, что это не так. Я думаю, причина в том, что у меня 64-битная сборка.

    Мой путь на самом деле: … / toolchains / arm-linux-androideabi-4.6 / prebuilt / linux-x86_64

    То, что я закончил делать, это копирование папки и переименование ее на «linux-x86», и теперь все компилируется.

    Надеюсь, это поможет кому-то!

    Я получил аналогичную ошибку (тест компилятора C не удался), пытаясь построить ffmpeg, используя версию r8d ndk, а также r8b.

    Проблема, которую я позже выяснил, заключается в том, что опция «Извлечь здесь» на последней версии ubuntu, похоже, имеет некоторые ошибки. Он не извлекает все. Таким образом, используя «tar -jxf» извлекает правильно, и вы увидите больше исполняемых файлов в папке bin.

    Вы можете проверить это для справки. http://code.google.com/p/android/issues/detail?id=41187

    Intereting Posts
    Ошибка при запуске проекта календаря Пример использования AIDL Есть ли открытая библиотека OCR или sdk (бесплатно) для Android и iOS? Android 5.0 – Добавление заголовка / нижнего колонтитула в RecyclerView Курсор в подсказке EditText не начинается справа для арабского Открыть образцы CV для загрузки OpenCV Manager BindService () возвращает false, но unbindService () нужно вызвать? Как начать намерение из ResolveInfo Определить изменение фрагмента при эспрессо-тестировании Проблема совместного использования схемы: иногда я получаю сообщение «Невозможно загрузить изображение» МАНИФЕСС СМЕРТЬ: Можно ли увидеть смешанный манифест? Ошибка ProGuard не может найти суперкласс или интерфейс org.apache.http.entity Android rawquery с динамическим предложением Where Как запустить скрипт matlab из java (для android) с помощью matlabcontol.jar Android Espresso: как я могу протестировать определенный фрагмент при выполнении одного действия для нескольких фрагментарных архитектур