侧边栏
首页代码

Android native项目编译v7a时-Werror参数导致报错

在GitHub上下载了一个demo,自己编译运行时,v8a的so是可以正常编译运行的,但是就是v7a的不能也一直报错,最后发现在Android.mk文件里去掉-Werror字段就可以了。于是上网了解了一下关于-Werror的意思,这里记录一下

Android源码下编译Native源码采用Android.mk或者Android.bp,由于源码编译选项越来越严格,特别是Android O平台以后,默认编译选项都使用了-Wall -Werror字段,现在简要说明下

1. -Wall和-Werror字段

  • Wall:编译阶段显示所有警告。
  • Werror:将所有的警告当成错误进行处理,使出现警告时就停止编译,这种错误是最常见的。

2. LOCAL_CFLAGS

LOCAL_CFLAGSAndroid.mk中定义的一个编译选项,稍微总结下常用:

  • -D选项,相当于添加宏定义,例如:LOCAL_CFLAGS += -DXXX相当于在所有源文件中增加一个宏定义#define XXX

  • -O代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化,用得少,暂不在讨论范围之内。

  • -g是生成调试信息,生成的可执行文件具有和源代码关联的可调试的信息
    -W[no-]<警告选项> no- 表示诊断时忽略这个警告 ,这个是本文的重点地方,划重点了
    编译器的警告设置参数,拥有众多的选项,下面举一些常用的例子:

    -Woption 让编译器给出option指定的编译警告,常用的一些如下:
    unused-function: 遇到仅声明过但尚未定义的静态函数时发出警告
    unused-parameter: 从未用过的函数参数的警告。
    unused-variable: 在本地声明但从未用过的变量的警告。
    unused-value: 经计算但从未用过的值得警告。
    return-type: 对函数返回类型不当的警告。
    uninitialized:在初始化之前就使用自动变量。
    float-equal: 比较两个浮点数是否相等。
    -Wall 给出“几乎”所有的编译器警告,注意是“几乎”。下面是一些-Wall没有输出的警告类型:
    sign-compare:将有符号类型和无符号类型数据进行比较时发出警告。
    unreachable-code:如果发现从未执行的代码时给出警告。
    inline:如果某函数不能按要求内嵌(inline),则无论是函数声明为inline或者是指定了
    -finline-functions 选项,编译都将发出警告。
    -Werror 把所有的警告都视为错误处理。
    -Wno-option 如果我们不想输出某些警告信息,可以使用此参数形式,
    比如:LOCAL_CFLAGS := -Wno-unused-parameter

参考:
Android源码编译Werror类型错误处理

posted @   咸鱼Jay  阅读(99)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
页脚HTML代码
点击右上角即可分享
微信分享提示
电磁波切换