FFMPEG(三)编译脚本中的FLAGS如何编写

FLAGS组成

我们在编译ffmpeg库的sh脚本里有这么一串FLAGS,用于gcc或clang编译器

FLAGS=“-isystem KaTeX parse error: Expected group after '_' at position 54: …-androideabi -D_̲_ANDROID_API__=API -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -marm -march=$CPU -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,–noexecstack -Wformat -Werror=format-security -O0 -fPIC”,

这么一长串是怎么来的,谁人能记住,其实不用记住,它是从Android开发工具里导出来的,然后再拼上include头文件路径等。

1.1 从androidStuido里导出FLAGS

我们使用androidStudio向导新建一个nativeC++工程(如工程名nativeTest),编译成功后,我们打开电脑位置到nativeTest目录下,搜索build.ninja文件,打开后找到FLAGS,如下图:
在这里插入图片描述

复制出FLAGS的值:FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC

1.2 再拼一个-isystem 和 android API平台版本号

isystem

  • -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi;(32位CPU)

  • -isystem $NDK_ROOT/sysroot/usr/include/aarch64-linux-android;(64位CPU)

isystem表示在后面的这个目录下$NDK_ROOT/sysroot/usr/include/arm-linux-androideabi
搜索头文件

android API平台版本号

-D__ANDROID_API__=21;

-D__ANDROID_API__=21: 表示编译ffmpeg是针对android系统API 21版本。从21开始ndk用的是clang来编译C/C++。

最终FLAGS的值如下:

  • 32位(如armv7-a):
    FLAGS = -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC

  • 64位(如armv8-a)
    FLAGS = -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冉航--小虾米

希望得到您的鼓励和交流

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值