编译android4.0源码报错cc1plus: warnings being treated as errors

本文介绍了解决Android源码编译时遇到的cc1plus警告被当作错误的问题。通过删除Makefile中的-Werror参数即可修复。适用于Ubuntu 12.04 LTS及gcc 4.6.3环境。

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

编译android源码,Make出错,提示cc1plus: warnings being treated as errors,主要原因是 Makefile 里面 gcc 的参数多了一个"-Werror",找到出错的make文件夹,看Make文件里面有没有“-Werror",如果有的话将其删除,重新编译即可。

我的环境是Ubuntu12.04LTS, gcc 版本 4.6.3

gcc编译选项说明:

-pedantic 选项,那么使用了扩展语法的地方将产生相应的警告信息

-Wall 使用它能够使GCC产生尽可能多的警告信息

-Werror  它要求GCC将所有的警告当成错误进行处理



### 解决 GCC 将所有警告视为错误的方法 GCC 提供了一个选项 `-Werror`,该选项会将所有的警告视为错误并阻止编译过程继续。如果希望禁用此行为或将特定警告排除在外,则可以使用以下方法: 1. **移除 `-Werror` 选项** 如果项目配置文件(如 Makefile 或 CMakeLists.txt)中显式启用了 `-Werror`,则可以通过删除或注释掉该选项来解决问题[^4]。 2. **仅针对某些警告启用 `Werror`** 使用 `-Wno-error=<warning-name>` 来指定不将其作为错误处理的警告类别。例如,要忽略全局构造函数相关的警告,可以在编译命令中加入 `-Wno-error=unused-global-ctors`[^5]。 3. **调整构建脚本中的参数设置** 若变量 `"use_openh264"` 是通过构建参数传递给编译器的,则需确认其是否间接引入了额外的严格检查规则。如果是这种情况,可能需要重新评估这些参数的作用范围,并适当修改它们的行为[^3]。 以下是用于测试上述更改的一个简单示例代码片段: ```c #include <iostream> int main() { std::cout << "Testing warning handling." << std::endl; int unused_variable; // Intentional unused variable to trigger a warning. return 0; } ``` 当尝试编译这段程序时,默认情况下只会显示未使用的变量这一类别的提示;但如果存在 `-Werror` 参数,则会导致整个流程中断。因此,在实际操作前务必仔细阅读文档说明以及相关附录内容(比如提到过的第9条和第10条)[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值