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

相关推荐
嵌入式老牛2 天前
第4课 机器学习的三要素
人工智能·机器学习·优化·模型·学习准则
无小道3 天前
算法——暴力+优化
算法·优化·暴力
竹之却5 天前
【Agent-阿程】AI先锋杯·14天征文挑战第14期-第2天-大模型部署与优化实战
人工智能·ai·大模型·边缘计算·剪枝·优化·蒸馏
月光宝盒造梦师12 天前
Ant Design Ellipsis 中的判断逻辑 isEleEllipsis 方法非常消耗性能
javascript·react·优化
___波子 Pro Max.25 天前
GCC选项 -frecord-gcc-switches:记录编译选项的利器
gcc
紫郢剑侠1 个月前
【C语言编程gcc@Kylin | 麒麟 】5:获取系统启动时间
c语言·开发语言·kylin·gcc·麒麟操作系统
wsoz1 个月前
GCC编译
linux·c语言·嵌入式·gcc
嘿嘿嘿x31 个月前
Vscode/MinGW-64编译
gcc
嵌入式×边缘AI:打怪升级日志1 个月前
GCC 编译器的使用
gcc
故事和你911 个月前
sdut-程序设计基础Ⅰ-实验二选择结构(1-8)
大数据·开发语言·数据结构·c++·算法·优化·编译原理