FFmpeg - 编译指定平台so文件(Android)

本文介绍如何使用FFmpeg类库完成Android平台上的交叉编译。内容包括配置NDK路径、工具链设置、编译选项说明等。适用于希望了解FFmpeg在移动端应用开发的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文部分整理自 最简单的基于FFmpeg的移动端例子:Android HelloWorld

FFmpeg类库完整功能脚本

Note : 必须要修改部分configure,这部分请查看上面链接的 (1)编译FFmpeg类库 b) 修改FFmpeg的configure部分,这里我就不赘述了。

Note : 关于交叉编译一些类似Sysroot名词的解释可以看这里:Android 独立工具链

Note : 解释下Clang

引用块内容Clang是一个C语言、C++、Objective-C、C++语言的轻量级编译器。源代码发布于BSD协议下。简介2013年4月,Clang已经全面支持C++11标准,并开始实现C++1y特性(也就是C++14,这是C++的下一个小更新版本)

Code:

# NDK地址
NDK=/Users/biezhihua/software/android-ndk-r13b
# 工具链目录
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt
# sysroot 目录 
# sysroot 是一个包含针对您的目标的系统标头和库的目录
PLATFORM=$NDK/platforms/android-21/arch-arm
# Lib结果目录 
PREFIX=/Users/biezhihua/software/TestLib

 # --target-os=...               目标系统 Android是Linux内核
 # --prefix=...                  Lib(so)结果目录
 # --enable-cross-compile        使用交叉编译 
 # --cc=...                      使用C编译器
 # --cross-prefix=...            交叉工具链前缀
 # --disable-stripping          禁止剥离可执行程序和共享库
 # --nm=...                     这个不知道,知道的请留言

./configure --target-os=linux --prefix=${PREFIX} \
    --enable-cross-compile \
    --arch=arm \
    --cc=${PREBUILT}/darwin-x86_64/bin/arm-linux-androideabi-gcc \
    --cross-prefix=${PREBUILT}/darwin-x86_64/bin/arm-linux-androideabi- \
    --nm=${PREBUILT}/darwin-x86_64/bin/arm-linux-androideabi-nm \
    --sysroot=${PLATFORM} \
    --disable-stripping \
    --enable-runtime-cpudetect \
    --disable-asm \
    --enable-gpl \
    --enable-shared \
    --enable-static \
    --enable-small \
    --disable-ffprobe \
    --disable-ffplay \
    --disable-ffmpeg \
    --disable-ffserver \
    --disable-debug \
    --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a" 

Result :
这里写图片描述

gcc编译器 CFLAGS 标志参数

普通编译选项
参数说明
-S只是编译不汇编,生成汇编代码
-E只进行预编译,不做其他处理
-g在可执行程序中包含标准调试信息
-o file把输出文件输出到file里
-v打印出编译器内部编译各过程的命令行信息和编译器的版本
-I dir在头文件的搜索路径列表中添加dir目录
-L dir在库文件的搜索路径列表中添加dir目录
-static链接静态库
-llibrary连接名为library的库文件
告警和出错选项
选 项含 义
-ansi支持符合ANSI标准的C程序
-pedantic允许发出ANSI C标准所列的全部警告信息
-pedantic-error允许发出ANSI C标准所列的全部错误信息
-w关闭所有告警
-Wall允许发出Gcc提供的所有有用的报警信息
-werror把所有的告警信息转化为错误信息,并在告警发生时终止编译过程
体系结构相关选项
选 项含 义
-mcpu=type针对不同的CPU使用相应的CPU指令。可选择的type有i386、i486、pentium及i686等
-mieee-fp使用IEEE标准进行浮点数的比较
-mno-ieee-fp不使用IEEE标准进行浮点数的比较
-msoft-float输出包含浮点库调用的目标代码
-mshort把int类型作为16位处理,相当于short int
-mrtd强行将函数参数个数固定的函数用ret NUM返回,节省调用函数的一条指令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值