2

我已经使用以下构建脚本进行了 ffmpeg 构建。 https://github.com/Free-Syj/ffmpeg-build-script/blob/master/build-android-ffmpeg.sh

它适用于armv7。
当我尝试使用 arm64 架构时,它给了我以下错误。

NDK/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-gcc 无法创建可执行文件。

编辑: -

以下构建脚本已用于构建。

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
4

2 回答 2

0

第一步应该是升级您的 NDK。当 r10e 发布时,aarch64 是非常新的,并且从那时起编译器可能已经针对该目标进行了改进。

其次,当涉及到 autoconf 项目时,您可能会更容易使用 NDK 内置的独立工具链,而不是尝试自己安装一个。

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

以上将仅用作交叉编译器。无需自己处理--sysroot,-gcc-toolchain或任何这些。

于 2017-01-30T20:42:40.760 回答
0

尝试将--arch=arm更改为--arch=aarch64

于 2019-08-26T07:35:40.447 回答