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

相关推荐
William.csj3 天前
Linux——普通用户离线源码编译 gcc-9 方法和调用教程
linux·服务器·gcc
2601_951645635 天前
老牌C语言迎来重大蜕变,GCC 16+Clang 19全面适配C23标准
c·clang·gcc·嵌入式开发·c23
力学与人工智能5 天前
论文分享 | 优化离散损失求解反问题:无需神经网络的快速精确学习
人工智能·神经网络·学习·优化·离散损失·反问题求解·快速准确学习
斐夷所非6 天前
GCC 编译 | 命令参数、编译流程与链接机制
gcc
ScilogyHunter7 天前
GCC完全指南
linux·gcc
力学与人工智能7 天前
PPT分享 | 洛桑联邦理工学院魏震:深度几何学习在工业设计优化中的应用
学习·优化·工业设计·深度几何学习·洛桑联邦理工学院
梦想的颜色13 天前
MySQL 数据存储结构与查询执行生命周期深度解析
运维·数据结构·数据库·mysql·线程·优化
寻道模式15 天前
【时间之外】GEO工具,事半功倍效果验证
优化·工具·geo·标题
深念Y21 天前
DeepSeek/MiMo 推理链缓存代理:从内存到 SQLite 的两级缓存架构实战
数据库·缓存·架构·sqlite·内存·优化·分层
麦哲思科技任甲林25 天前
软件开发中的三次法则
重构·ai编程·优化·重复·三次法则