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 天前
Centos7操作系统参数调优
优化·contos7·系统参数配置
RedMery3 天前
安装低版本的源
gcc
fpcc5 天前
跟我学C++中级篇——循环展开的分析
c++·优化
LostSpeed5 天前
gcc的-O优化等级和编译后程序占用空间的关系
优化·gcc
梁萌7 天前
MySQL分区表使用保姆级教程
数据库·mysql·优化·分区表·分区·partitions
NueXini9 天前
Unity 3D MMO RPG手游征服2GB设备之历程
3d·unity·性能优化·游戏引擎·优化·rpg·mmo
CodeAmaz10 天前
MySQL 调优的(实战思路)
数据库·mysql·优化
mzhan01710 天前
Linux: gcc: pkgconf: 谁添加的-I选项
linux·make·gcc·pkgconf
冉佳驹10 天前
Linux ——— sudo权限管理和GCC编译工具链的核心操作
linux·makefile·make·gcc·sudo·.phony
小小工匠11 天前
LLM - 主流RAG优化思路解析
llm·优化·rag