2017-01-25 2 views
1

J'ai construit ffmpeg avec le script de construction suivant. https://github.com/Free-Syj/ffmpeg-build-script/blob/master/build-android-ffmpeg.shAndroid FFMPEG build for arm64 a échoué avec erreur?

Cela a fonctionné pour armv7.
quand j'ai essayé de faire pour l'architecture arm64, il m'a donné l'erreur suivante. NDK/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-gcc est incapable de créer un fichier exécutable.

Modifié: -

Après script de compilation a été utilisé pour faire de la construction.

NDK=/Users/tapansodha/Documents/Softwares/AndroidStudio/adt-bundle-mac-x86_64-20140702/android-ndk-r10e 
function build_one 
{ 
./configure --target-os=linux \ 
--prefix=$PREFIX \ 
--enable-cross-compile \ 
--extra-libs="-lgcc" \ 
--arch=arm \ 
--cc=$CC \ 
--cross-prefix=$PREBUILT/bin/aarch64-linux-android- \ 
--nm=$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 " \ 
--enable-shared \ 
--disable-static \ 
--extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \ 
--disable-everything \ 
--disable-debug \ 
--disable-programs \ 
--disable-doc \ 
--enable-decoder=h264 \ 
--enable-decoder=mjpeg \ 
--enable-decoder=mpeg4 \ 
--enable-decoder=mxpeg \ 
--enable-decoder=aac \ 
$ADDITIONAL_CONFIGURE_FLAG 

make clean 
make -j4 install 
} 

#arm arm64-v8a 
PLATFORM=$NDK/platforms/android-21/arch-arm64/ 
PREBUILT=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64 
CC=$PREBUILT/bin/aarch64-linux-android-gcc 
NM=$PREBUILT/bin/aarch64-linux-android-nm 
CPU=arm64 
PREFIX=./android_arm64n/$CPU 
ADDITIONAL_CONFIGURE_FLAG= 
build_one 
+0

Pouvez-vous partager la variante aarch64 de votre script? Celui qui fonctionne n'est pas très utile pour comprendre ce qui s'est passé :) –

+0

Merci Dan de demander. J'ai ajouté le script de construction. –

Répondre

0

La première étape devrait être de mettre à jour votre NDK. aarch64 était très nouveau quand r10e a été libéré et les compilateurs ont probablement amélioré pour cette cible depuis lors. Deuxièmement, en ce qui concerne les projets autoconf, vous aurez probablement beaucoup plus de facilité à utiliser les NDK standalone toolchains plutôt que d'essayer de les monter vous-même.

$ $NDK/build/tools/make_standalone_toolchain.py \ 
    --arch arm64 --install-dir my-toolchain 
$ my-toolchain/bin/clang++ foo.cpp 

Ce qui précède fonctionne comme un compilateur croisé. Pas besoin de traiter --sysroot, -gcc-toolchain, ou tout cela vous-même.