FFMPEG交叉编译记录

使用环境

  • 虚拟机Centos7
  • ffmpeg 4.2.2
  • NDK版本:android-ndk-r20b

编译步骤参考文章

https://juejin.im/post/6844904039524597773#heading-23

记录一下自己踩过的坑,linux小白

1、NDK版本17之后使用clang编译器,不使用gcc
2、初装linux可能未安装clang编译器,需要先检查下

终端输入clang,若提示 not input file 则已安装

sudo yum install epel-release
sudo yum install clang

安装指导:在CentOS 7上安装clang

3、编译失败进入ffbuild/config.log查看最后一行,提示“/lib64/libc.so.6: version `GLIBC_2.15’ not found”
  • 终端命令查看系统支持的版本

strings /lib64/libc.so.6 | grep GLIBC

4、提示找不到"config.mak"等文件

可先执行 ./configure 进行生成,再执行shell脚本

5、需要同时编译多个CPU架构

修改build.sh脚本文件

#!/bin/bash
set -x
# 目标Android版本
API=21
CPU=armv7-a
#so库输出目录
OUTPUT=/root/Desktop/android/$CPU
# NDK的路径,根据自己的NDK位置进行设置
NDK=/root/czb/android-ndk-r20b
# 编译工具链路径
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
# 编译环境
SYSROOT=$TOOLCHAIN/sysroot

function start_build
{
  ./configure \
  --prefix=$OUTPUT \
  --target-os=android \
  --arch=$ARCH \
  --cpu=$CPU \
  --enable-asm \
  --enable-neon \
  --enable-cross-compile \
  --enable-shared \
  --disable-static \
  --disable-doc \
  --disable-ffplay \
  --disable-ffprobe \
  --disable-symver \
  --disable-ffmpeg \
  --sysroot=$SYSROOT \
  --cross-prefix=$PREFIX \
  --cross-prefix-clang=$PREFIT_CLANG \
  --extra-cflags="-fPIC"

  make clean all
  # 这里是定义用几个CPU编译
  make -j12
  make install
}
#armv8-a架构

ARCH=arm64
CPU=armv8-a
API=21
PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
PREFIT_CLANG=$TOOLCHAIN/bin/aarch64-linux-android$API-
OUTPUT=/root/Desktop/android/$CPU
start_build    



#armv7-a架构

ARCH=arm
CPU=armv7-a
OUTPUT=/root/Desktop/android/$CPU
API=21
PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
PREFIT_CLANG=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-
start_build
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值