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 就可以链接成功。

相关推荐
yanlaifan4 天前
编译器gcc介绍
gcc
捷瑞电子工坊6 天前
Ubuntu 下安装 VSCode 和 gcc 的简单步骤
vscode·ubuntu·代码编辑器·安装教程·gcc·deb·snap
GKxx11 天前
在 HarmonyOS 上从源码构建 GCC 16(gcc/g++ + libstdc++ + libsanitizer):完整记录
c++·华为·harmonyos·鸿蒙·gcc
2601_9579569015 天前
2026 武汉智造 GEO 优化:一网推李冬玭高端制造行业精准获客实战
优化·geo·智造·2026·武汉
又是重名了16 天前
大数据量导出 优化方案多版 第五版
数据库·优化·导出·大数据量
编程的一拳超人20 天前
C++AI编译错误自动修复神器-告别手动Debug的终极方案
clang·gcc·c++ 工程实践·c++ ai 工具开发实战·msvc解析
深念Y21 天前
系统内存与Swap优化记录
linux·内存·优化·虚拟内存·压缩·ram·zram
深念Y22 天前
订阅管理及节点过滤实践(技术笔记)
linux·网络·arm·优化·日志·工具·soc
深念Y1 个月前
Opencode Event 表写入优化方案
数据库·人工智能·ai·node.js·bug·优化·opencode
七夜zippoe1 个月前
DolphinDB 产能分析实战:从产能规划到瓶颈优化的完整方法论
优化·规划·dolphindb·产能·瓶颈