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

相关推荐
weixin_421725262 天前
Windows下C语言编译指南
c语言·visualstudio·mingw·gcc·windows编译
无所事事O_o3 天前
基于netty的websocket服务优化
java·websocket·netty·优化
无所事事O_o4 天前
JAVA应用不定时卡顿问题排查过程记录
java·优化
七夜zippoe5 天前
DolphinDB数据压缩与存储优化
优化·存储·数据·压缩·dolphindb
陈eaten9 天前
win11下nasm编写汇编及链接方案
汇编·链接·nasm·gcc·golink
李日灐16 天前
<5> Linux 开发工具:包管理 + Vim 实操 + GCC 编译流程 + 静态与动态链接详解
linux·运维·服务器·面试·vim·gcc
SunnyRivers21 天前
RAG 评估与优化
优化·rag·评估
呆呆敲代码的小Y22 天前
从LLM到Agent Skill:AI核心技术全拆解与系统化学习路线
人工智能·ai·llm·agent·优化·skill·mcp
AlbertS24 天前
distcc + ccache 编译递归问题排查总结
c++·cmake·gcc·g++·distcc·ccache
嵌入式老牛1 个月前
第4课 机器学习的三要素
人工智能·机器学习·优化·模型·学习准则