首页 > 其他分享 >Android native项目编译v7a时-Werror参数导致报错

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

时间:2023-03-11 18:44:54浏览次数:48  
标签:Wall Werror unused 编译 报错 警告 Android

在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类型错误处理

标签:Wall,Werror,unused,编译,报错,警告,Android
From: https://www.cnblogs.com/zuojie/p/17206687.html

相关文章

  • 使用Unity3D在PC+Android端截图保存,再添加到数据库中
    前提:1.使用的工具为Unity2021+VS2019+mysql8.02.使用的支持包         3.Unity组件  代码usingUnityEngine;usingSy......
  • kafka启动报错
    原kafka使用jdk8之后安装flink修改为jdk11,kafka启动报错......
  • 在Android 实现SD卡热插拔机制时,需要注意的几个方面
      1,sd卡热插拔机制的实现需要软件和硬件同时配合才能实现。 2,在电路上,需要一根单独的检测pin脚,通过检测pin脚的高低电平来检测sd卡的插拔动作,并在dws中将其配置成上拉......
  • Android中获取IMEI码
    //getIMEI码StringIMEI=this.getSystemService(Context.TELEPHONY_SERVICE).getDeviceId();StringmyIMSI=android.os.SystemProperties.get(android.teleph......
  • android camera拍照/录像后查看图片/视频并删除所有内容后自动回到camera预览界面
    在JB2版本上,在camera中拍照/录像,后点击右下角缩略图/向左滑动来查看图片/视频,当点击“删除”menu来删除所有的image/video后,camerapreview只显示在屏幕左边约四分之一的地......
  • android 图库播放幻灯片时灭屏再亮屏显示keyguard
    图库在播放幻灯片时,按power键灭屏,然后再亮屏,会发现幻灯片继续在播放,没有显示keyguard。如何在亮屏后显示解锁界面。修改方法是去掉FLAG_SHOW_WHEN_LOCKED标志位,在ICS2、J......
  • android 图库中对非mp4格式的视频去掉"修剪"功能选项
    在JB2版本上,新增了对视频进行修剪的功能。目前google默认对于非mp4格式的视频是不支持修剪的,在图库中的行为是会弹出toast提示"发生错误,无法剪辑该视频"。如何对非mp4格式的......
  • android 图库语言更新
    中文模式下进入图库第一个界面来查看所有的相册集,按home键,设置手机语言为英文后,再回到图库中查看相册的名称仍然为中文。如何在手机更改语言后图库中相册的名称也进行语言更......
  • 3月9号Android开发学习
    禁用与恢复按钮在实际业务中按钮通常有两种状态,不可用状态和可用状态,它们的区别如下:(1)不可用按钮:按钮不允许点击,即使点击也没有反映,同时按钮文字为灰色(2)可用按钮:......
  • centos 安装python3后yum报错
    问题centos安装python3后,并且把/usr/bin/python软链接到python3后,yum命令报错原因:yum命令依赖于python2,导致报错解决方法:修改/usr/bin/yum文件的第一行p......