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

相关推荐
深念Y3 小时前
系统内存与Swap优化记录
linux·内存·优化·虚拟内存·压缩·ram·zram
深念Y1 天前
订阅管理及节点过滤实践(技术笔记)
linux·网络·arm·优化·日志·工具·soc
深念Y5 天前
Opencode Event 表写入优化方案
数据库·人工智能·ai·node.js·bug·优化·opencode
七夜zippoe5 天前
DolphinDB 产能分析实战:从产能规划到瓶颈优化的完整方法论
优化·规划·dolphindb·产能·瓶颈
同勉共进1 个月前
记一例 vibe coding + gcc bug 导致的线程池死锁问题
c++·线程池·gcc·死锁·vibe coding
冷小鱼1 个月前
Agent 大模型的后训练、微调、评估与迭代优化:从理论到工程实践
大模型·微调·优化·迭代·评估
追兮兮1 个月前
MCUQuickStart:一键生成 STM32 / GD32 的 Keil、CMake、RTOS 工程
stm32·单片机·freertos·gd32·gcc·工程模版
William.csj2 个月前
Linux——普通用户离线源码编译 gcc-9 方法和调用教程
linux·服务器·gcc
2601_951645632 个月前
老牌C语言迎来重大蜕变,GCC 16+Clang 19全面适配C23标准
c·clang·gcc·嵌入式开发·c23
力学与人工智能2 个月前
论文分享 | 优化离散损失求解反问题:无需神经网络的快速精确学习
人工智能·神经网络·学习·优化·离散损失·反问题求解·快速准确学习