# Mac编译
第一次接入FFmpeg,搞了整整一天,生成so库,可谓一波三折,功夫不负有心人有心人,终于搞定了。网上很多方案都是基于ndk14之前生成的,最新版本的ndk21和最新版本的FFmpeg4.3.1用不了,错误很大,搞了好一阵子发现在Linux系统中一直报错,刚刚开始以为c编译器没有,于是安装了,yum install yasm和nasm但是还是报错,然后把ndk换成ndk14才可以编译了,但是问题又来了,虽然编译成功了但是没有生成so库文件内容。最后通过日志分析,才知道在ndk版本16开始c编译器已经被取消,使用的是clang编译,于是重新有引入新的ndk21,才搞定。
一、编译环境
FFmpeg4.3.1版本变化内容比较多,实践起来资料比较少,发现了很多问题,因此采用最常用的FFmpeg4.2.2。对于C/C++的编译,通常有两个工具 GCC 和 CLANG 。CLANG 则是更高效的C/C++编译工具,Google在NDK17 以后,把 GCC 移除了,全面推行使用 CLANG 。下面使用CLANG编译。
1、我的编译环境:
ffmpeg-4.2.2.tar.bz2
Mac
NDK21.1.6352462
QIOO855手机
2、查看手机支持的CUP:
adb shell cat /proc/cpuinfo
adb shell getprop ro.product.cpu.abi
ARCH=arm64
CPU=armv8-a
TOOL_CPU_NAME=aarch64
事实上这也是目前绝大多数手机都支持的CUP架构。
3、编译工具链目录:
/Users/xxx/Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/bin
4、交叉编译环境目录:
/Users/xxx/Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/sysroot
二、下载
1、NDK:
NDK 下载 | Android NDK | Android Developers