arm-linux-androideabi-gcc est incapable de créer un exécutable - compiler ffmpeg pour les appareils android armeabi
Je suis en train de compiler ffmpeg pour android armeabi appareils.
Je suis le tutoriel suivant par roman10.net
Le script de construction s'appuie ffmpeg pour armv7-un appareils. Je tiens à le construire pour armeabi.
Mon but ultime est d'exécuter ffmpeg commandes sur android armeabi et armv7-un appareils.
J'ai donc modifier le script de l'UC partie de
#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
(Je pensais le changer pour armv6 serait de construire ffmpeg compatible avec armeabi appareils. m-je tort?)
Doute 1:
Dois-je aussi changer de chaîne?
j'.e de arm-linux-androideabi-4.4.3 à arm-eabi-4.4.0 ?????
Doute 2:
Quand j'ai essayer de l'exécuter ./build.sh (sans modification de la chaîne), il me donne l'erreur suivante:
/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
après que j'ai eu beaucoup de mises en garde en disant:
‘sub_id’ est obsolète, et de nombreux autres fonction obsolète avertissements.
plate-forme: ubuntu 11.10
version de ffmpeg: 0.11.2
NDK : android-ndk-r5b
Voici mon script de construction:
#!/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
Comment puis-je résoudre ce problème? ce qui ne va pas?
source d'informationauteur Chaitanya Chandurkar
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si c'est ce que vous êtes à la recherche mais j'ai créé un script pour construire FFmpeg 0.11.1 pour Android. J'ai modifié les scripts fournis avec les anciens Bambuser FFmpeg construit afin de les inciter à travailler avec 0.11.1. Je suis actuellement à l'aide de ce script pour construire FFmpeg dans ma propre demande si je sais que le bâtir des œuvres. Le script situé à http://servestream.sourceforge.net/build-ffmpeg.sh. Je suis sur android-ndk-r8b et Ubuntu 12.04 (x64) à construire. Pour utiliser le script, procédez de la manière suivante:
1.) Télécharger le script
2.) Ouvrir le script et modifier la variable de PACKAGE pour correspondre package de l'application
3.) Le rendre exécutable: chmod +x build-ffmpeg.sh
4.) Définir le NDK variable utilisée par le script, par exemple: export NDK=/home/utilisateur/android-ndk-r8b
5.) Exécuter le script: ./build-ffmpeg.sh
Les binaires compilés sera situé dans le nouveau "final-construit" dossier dans le répertoire de travail courant. (Note: le script crée les fichiers binaires pour armeabi, armeabi-v7a et les architectures x86)
J'espère que cela répond à votre question.
Mise à JOUR:
Si le script n'est pas trouvé, http://sourceforge.net/p/servestream/code/HEAD/tree/ffmpeg/scripts/arm-build.sh
J'ai enfin trouvé le problème avec ma configuration face à ce même problème... à la Recherche à la arm-build.sh script, j'ai commencé à suivre le script. Avis de la "CHAÎNE de compilation=..." chemin d'accès.
À l'origine, le chemin d'accès est:
De la CHAÎNE d'=
echo $NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/*-x86
Quand je suis allé vérifier ce chemin d'accès existe, j'ai remarqué qu'il n'a pas.
Je pense que la raison est que j'ai une 64 bits construire.
Mon chemin est en fait:
.../toolchains/arm-linux-androideabi-4.6/prédéfinis/linux-x86_64
Ce que j'ai fait a été de copier le dossier et le renommer en "linux-x86" et maintenant, tout est en cours de compilation.
Espère que cela aide quelqu'un!
J'ai eu une erreur similaire (compilateur C test a échoué) tout en essayant de construire à l'aide de ffmpeg r8d ndk version et aussi r8b.
Le problème que j'ai découvert plus tard que "Extraire ici" sur la dernière version d'ubuntu semble avoir quelques bug. Il n'extrait pas tout. Ainsi, l'utilisation de "tar-jxf' extraits correctement et vous verrez de plus en plus les exécutables dans le dossier bin.
Vous pouvez le vérifier sur cela pour référence.
http://code.google.com/p/android/issues/detail?id=41187