【问题标题】:Android FFMPEG build for arm64 failed with error?为 arm64 构建 Android FFMPEG 失败并出现错误?
【发布时间】:2017-06-10 04:28:15
【问题描述】:

我已经使用以下构建脚本构建了 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

【问题讨论】:

  • 你能分享你的脚本的 aarch64 变体吗?有效的方法对于找出问题所在并没有那么有用:)
  • 感谢丹的提问。我已经添加了构建脚本。

标签: android ffmpeg android-ndk android-ffmpeg


【解决方案1】:

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

其次,当涉及到 autoconf 项目时,使用 standalone toolchains 内置的 NDK 可能会比尝试自己安装一个更容易。

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

以上将仅作为交叉编译器工作。无需自己处理--sysroot-gcc-toolchain 或任何此类。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 2021-11-27
      • 2022-11-10
      相关资源
      最近更新 更多