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

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

 1 -Wall和-Werror字段

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

2 LOCAL_CFLAGS 

LOCAL_CFLAGS是Android.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

3 修改方法
         相对比较靠谱的方法就是LOCAL_CFLAGS 中增加编译器的警告设置参数,这里我们如下错误说明:

error: unused parameter 'conv' [-Werror,-Wunused-parameter]
error: data argument not used by format string [-Werror,-Wformat-extra-args]


具体步骤如下:
在该Native中的Android.mk中添加如下编译选项:

LOCAL_CFLAGS +=  -Wno-unused-parameter \
                 -Wno-format-extra-args

ps  以上资源copy了大家的精华,但是链接不记得了,实在抱歉!!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值