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

相关推荐
Wallace Zhang6 天前
STM32F103_Bootloader程序开发15 - 从Keil到vscode + EIDE + GCC的迁移实践
stm32·gcc·eide
艾莉丝努力练剑10 天前
GCC编译器深度解剖:从源码到可执行文件的全面探索
c++·ide·经验分享·gcc
Wallace Zhang11 天前
STM32 - Embedded IDE - GCC - 如何将编译得到的.bin固件添加CRC32校验码
stm32·gcc·eide
Wallace Zhang12 天前
STM32 - Embedded IDE - GCC - 使用 GCC 链接脚本限制 Flash 区域
stm32·gcc·eide
流火无心15 天前
mysql索引优化实战
mysql·优化·索引
七夜zippoe21 天前
Python性能优化实战(三):给内存“减负“的实用指南
python·内存·优化
danzongd1 个月前
浅谈C++ const
c++·内存·优化·汇编语言·计算机系统·寄存器
shylyly_2 个月前
Linux->动静态库
linux·运维·服务器·gcc·动静态库·编址·打包库
阿杰技术2 个月前
报错:升级gcc,centos
centos·gcc
空气中的告白2 个月前
搭建云途YTM32B1MD1芯片VSCODE+GCC + Nijia + Cmake+Jlink开发环境
vscode·gcc