
FFmpeg版本:
4.3.4
NDK版本:r20b
NDK在r16之后将gcc编译器移除了,需要使用clang编译器。所以在配置脚本的时候需要设置编译器
configure中编译器参数配置:
- --cc=clang路径 \
- --cxx=clang++路径 \
修改文件ffmpeg/configure:
- SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
- LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
- SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
- SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
替换为
- SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
- LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
- SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
- SLIB_INSTALL_LINKS='$(SLIBNAME)'
- 复制代码
修改好后保存这样才符合android
比较重要的地方是要除了设置clang路径外还需要正确设置sysroot交叉编译根目录
完整的编译脚本配置:
- #!/bin/bash
- export NDK_HOME=NDK路径
- export PLATFORM_VERSION=android-21
- function build
- {
- echo "start build ffmpeg"
- ./configure \
- --target-os=android \
- --prefix=$PREFIX \
- --arch=$ARCH \
- --disable-doc \
- --enable-shared \
- --disable-static \
- --disable-yasm \
- --disable-symver \
- --enable-gpl \
- --disable-ffmpeg \
- --disable-ffplay \
- --disable-ffprobe \
- --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
- --cc=$TOOLCHAIN/bin/$ARCH-linux-androideabi21-clang \
- --cxx=$TOOLCHAIN/bin/$ARCH-linux-androideabi21-clang++ \
- --enable-cross-compile \
- --sysroot=$SYSROOT \
- --enable-small \
- --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
- --extra-ldflags="$ADDI_LDFLAGS" \
- $ADDITIONAL_CONFIGURE_FLAG
- make clean
- make
- make install
- echo "build ffmpeg for $ARCH finished"
- }
- #arm版本
- ARCH=armv7a
- CPU=armv7a
- export PREFIX=$(pwd)/android/$ARCH
- TOOLCHAIN=$NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64
- CROSS_COMPILE=$TOOLCHAIN/bin/$ARCH-linux-androideabi21-
- ADDI_CFLAGS="-marm"
- # SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-arm/ 此这个交叉编译目录是ndk:r14
- SYSROOT=$TOOLCHAIN/sysroot
-
- build
- 复制代码
进qun 免费分享:资料包括(C/C++,Android,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)
较为重要的参数配置:
--target-os=android:目标设置为android--cross-prefix=XXXX: 为编译工具指定路径--cc=XXXX:指定使用何种C编译器(默认gcc)-cxx=XXXX:add ECFLAGS to CXXFLAGS--sysroot=XXXXX:置顶交叉编译根目录--enable-shared:生成动态so库--prefix=XXX:生成lib以及include文件存放在哪里