gcc: -O2 优化选项的一个副作用:可以掩盖链接,符号未定义错误 undefined reference to

这个-O2 优化选项,可以掩盖链接错误。因为这个包含130多项的优化选项。里面有关于四代码的优化。

假如一个函数A里调用了另一个函数B,但是函数B是外部定义的符号,而且没有定义。

同时如果A函数是个死函数的话,-O2,可能将这个函数A优化为如下的方式,直接返回。看似从未调用这个函数。

c 复制代码
(gdb) disass set_shared_ip_state_down
Dump of assembler code for function A:
   0x000000001008f4c0 <+0>:     mov    $0x1,%eax
   0x000000001008f4c5 <+5>:     retq

所以看问题时,需要注意这一点,如果用-O2 编译链接工程,没有问题。并不一定代表去掉 -O2 就可以链接成功。

相关推荐
2601_957956901 天前
2026 武汉智造 GEO 优化:一网推李冬玭高端制造行业精准获客实战
优化·geo·智造·2026·武汉
又是重名了2 天前
大数据量导出 优化方案多版 第五版
数据库·优化·导出·大数据量
编程的一拳超人6 天前
C++AI编译错误自动修复神器-告别手动Debug的终极方案
clang·gcc·c++ 工程实践·c++ ai 工具开发实战·msvc解析
深念Y7 天前
系统内存与Swap优化记录
linux·内存·优化·虚拟内存·压缩·ram·zram
深念Y8 天前
订阅管理及节点过滤实践(技术笔记)
linux·网络·arm·优化·日志·工具·soc
深念Y12 天前
Opencode Event 表写入优化方案
数据库·人工智能·ai·node.js·bug·优化·opencode
七夜zippoe12 天前
DolphinDB 产能分析实战:从产能规划到瓶颈优化的完整方法论
优化·规划·dolphindb·产能·瓶颈
同勉共进1 个月前
记一例 vibe coding + gcc bug 导致的线程池死锁问题
c++·线程池·gcc·死锁·vibe coding
冷小鱼1 个月前
Agent 大模型的后训练、微调、评估与迭代优化:从理论到工程实践
大模型·微调·优化·迭代·评估
追兮兮2 个月前
MCUQuickStart:一键生成 STM32 / GD32 的 Keil、CMake、RTOS 工程
stm32·单片机·freertos·gd32·gcc·工程模版