最近项目要求对ffmpeg在arm64下进行编译。发现原来在arm64下编译是多么的麻烦。其实真正的麻烦是在使用baidu搜索搜的东西基本都可以忽略。没有一个内容是可用的。明显的是对--arch都无法给到准确的值。
1 编译准备
ndk使用的是12b。支持到platform-24。顺便提下该版本尤其增强了安全性检查,尤其是TEXTREL的检查。同时也对许多的系统inline函数进行了最新实现。导致原来可以正常编译的项目,现在无法通过,不是缺少这个函数就是缺少那个函数。目前个人的临时解决方法就是使用platform-19或则将19中的一些头文件替换到24.哈哈。
2 ffmpeg编译开始
ffmpeg需要在指定官方网站下载。这个可以通过baidu轻松找到。我仅仅需要264的解码功能,所以将一些不需要的进行了disable。
编译指令如下:
mkdir -p ./build/androidchmod 777 ./configurechmod 777 ./version.shexport ARM_ROOT=$ANDROID_NDK_ROOTexport ARM_INC=$ARM_ROOT/platforms/android-23/arch-arm64/usr/include/export ARM_LIB=$ARM_ROOT/platforms/android-23/arch-arm64/usr/libexport ARM_TOOL=$ARM_ROOT/toolchains/aarch64-linux-android-4.9/PRebuilt/linux-x86_64export ARM_LIBO=$ARM_TOOL/lib/gcc/aarch64-linux-android/4.9.xexport PATH=$ARM_TOOL/bin:$PATHexport ARM_PRE=arm-linux-androideabiCC=$ARM_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin./configure /--target-os=linux /--arch=aarch64 /--enable-cross-compile /--sysroot=$ARM_ROOT/platforms/android-23/arch-arm64 /--cross-prefix=$ARM_TOOL/bin/aarch64-linux-android- /--cc=$ARM_TOOL/bin/aarch64-linux-android-gcc /--nm=$ARM_TOOL/bin/aarch64-linux-android-nm /--extra-cflags="-fvisibility=hidden -fdata-sections -ffunction-sections -Os -fPIC -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300" /--enable-asm /--disable-yasm /--enable-static /--disable-shared /--enable-small /--enable-gpl /--enable-version3 /--enable-nonfree /--enable-neon /--disable-ffmpeg /--disable-ffplay /--disable-ffserver /--disable-ffprobe /--disable-avdevice /--disable-avformat /--disable-postproc /--disable-avfilter /--disable-pthreads /--disable-network /--disable-swscale-alpha /--disable-swscale /--enable-fft /--enable-mdct /--disable-rdft /--disable-dxva2 /--disable-encoders /--disable-decoders /--disable-hwaccels /--disable-muxers /--disable-demuxers /--disable-parsers /--disable-bsfs /--disable-protocols /--disable-indevs /--disable-outdevs /--disable-filters /--disable-debug /--disable-stripping /--disable-armv5te /--disable-armv6 /--disable-armv6t2 /--enable-decoder=h264 /--disable-doc /--enable-pic# build for arm64make cleanmake# copy out the armv8 libsmkdir ./build/android/armv8cp -f ./libavcodec/libavcodec.a ./build/android/armv8/libavcodec.acp -f ./libavutil/libavutil.a ./build/android/armv8/libavutil.a
打完收工。
新闻热点
疑难解答