关于禁用编译Kernel 是warning as a error

android编译Kernel时,从高版本GCC起,就开始把warning作为error对待,比如出现错误:

error, forbidden warning  --等等

这样处理对于想快速见到结果的快速迭代模式来说有点碍手,怎样取消呢?

Kernel\Makefile中找到下面的语句

KBUILD_CFLAGS   :=

之后添加上这个参数:

-Wno-error, 如果还不起作用的话,就使用下面最强的开关


-w , 注意w小写


比如添加之后是这样的:

KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
  -fno-strict-aliasing -fno-common \
  -Werror-implicit-function-declaration \
  -Wno-format-security \
  -Wno-error \

  -w \                                                  //上面不起作用时可以使用这个
  -fno-delete-null-pointer-checks

### 关于“Not enough information to list image symbols and load addresses”的解决方案 当遇到“Not enough information to list image symbols and load addresses”错误时,通常表明分析工具无法获取足够的信息来解析目标程序中的符号表或加载地址。这可能涉及调试器、反汇编工具或其他逆向工程软件的功能限制。 以下是可能导致此问题的原因以及相应的解决方法: #### 1. **缺少符号信息** 如果目标可执行文件被剥离(stripped),则其内部符号表会被移除,导致调试器或静态分析工具无法识别函数名称和其他元数据。 - 解决方案:尝试重新构建带有调试信息的目标文件。例如,在使用 GCC 编译时可以添加 `-g` 参数以保留完整的符号信息[^2]。 ```bash gcc -o program_with_symbols program.c -g ``` #### 2. **动态链接库的影响** 某些情况下,目标应用依赖外部共享对象(shared objects)。这些 SO 文件可能会延迟加载或者根本没有导出必要的符号。 - 解决方案:确认所有必需的动态链接库均已正确安装并可用。可以通过 `ldd` 命令检查缺失的依赖项。 ```bash ldd /path/to/executable ``` 对于 Windows 平台上的 PE 文件,则应验证是否存在对应的 `.pdb` 调试数据库文件[^3]。 #### 3. **ASLR 随机化干扰** 现代操作系统普遍启用地址空间布局随机化 (Address Space Layout Randomization, ASLR),使得每次运行进程的基础内存位置发生变化。这种机制会妨碍基于固定偏移量定位特定代码片段的操作。 - 应对策略:临时禁用系统的 ASLR 功能以便更方便地研究固定的加载基址;不过出于安全性考虑不建议长期关闭此项特性。 在 Linux 上可通过修改 `/proc/sys/kernel/randomize_va_space` 来调整行为模式: ```bash echo 0 | sudo tee /proc/sys/kernel/randomize_va_space ``` 而在 Windows 中需要通过组策略编辑器设置相关选项或将启动参数附加到快捷方式命令行中 (`bcdedit /set nx AlwaysOff`)。 #### 4. **混淆与保护措施** 一些高级别的防护手段如 ROP gadget 扫描防御、控制流完整性(CFI) 或者虚拟化层隔离也会阻碍常规的方法去提取所需的数据结构描述。 - 处理办法:采用专门设计用来绕过上述障碍的技术框架比如 Marlin 提供的新颖思路来进行深入探索。 尽管如此,仍需注意合法合规范围内操作以免触犯法律条款。 --- ### 示例代码展示如何打印基本符号信息 下面给出一段简单的 Python 脚本用于演示读取 ELF 格式的二进制文件内的部分公开接口定义: ```python import lief binary = lief.parse("/bin/ls") # 替换为你感兴趣的路径名 for symbol in binary.symbols: if not symbol.is_import: print(f"{symbol.name} @ {hex(symbol.value)}") ``` 以上脚本借助 LIEF 库实现了自动化处理流程从而简化手动查找过程。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值