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

相关推荐
萧曵 丶6 天前
Java 常用运行参数配置及实际业务详解
java·bug·优化·问题排查·生产问题
a187927218317 天前
MySQL 硬件优化和操作系统优化
数据库·mysql·优化·raid·numa·sysbench·系统参数
切糕师学AI10 天前
GCC是什么?
编译器·gcc
硬汉嵌入式11 天前
MDK AC5,AC6,GCC以及IAR在const局部变量存储位置的异同
gcc·const·iar·ac6·mdk·ac5
唐装鼠13 天前
GCC/Clang 构造函数特性(deepseek)
gcc·构造函数特性
黛琳ghz16 天前
BoostKit 虚拟化性能优化原理解读
性能优化·虚拟化·优化·鲲鹏·服务·boostkit
其美杰布-富贵-李18 天前
PyTorch Optimizer 与 Scheduler 指南
人工智能·pytorch·python·优化·训练
yao0003719 天前
LLVM是什么 之 我与AI的思想碰撞
编辑器·gnu·clang·gcc·llvm
Lenyiin19 天前
《 Linux 修炼全景指南: 八 》别再碎片化学习!掌控 Linux 开发工具链:gcc、g++、GDB、Bash、Python 与工程化实践
linux·python·bash·gdb·gcc·g++·lenyiin
梁萌24 天前
Centos7操作系统参数调优
优化·contos7·系统参数配置