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 天前
【Java架构师体系课 | MySQL篇】③ Explain执行计划详解
java·数据库·mysql·架构·优化·索引·explain
赖small强2 天前
【ZeroRange WebRTC】WebRTC拥塞控制技术深度分析
webrtc·gcc·拥塞控制·twcc·remb·带宽估计
拾光Ծ6 天前
Linux高效编程与实战:自动化构建工具“make/Makefile”和第一个系统程序——进度条
linux·运维·自动化·gcc
ShiinaKaze9 天前
fatal error: bits/c++config.h: No such file or directory
linux·gcc·g++
计算衎11 天前
.c .o .a .elf .a2l hex map 这些后缀文件的互相之间的联系和作用
开发语言·elf·gcc·c/c++·a2l
代码一天不写我浑森蓝廋17 天前
CentOS7 使用 centos-release-scl-rh yum库安装 devtoolset
linux·centos·gcc·devtoolset
七夜zippoe1 个月前
压缩与缓存调优实战指南:从0到1根治性能瓶颈(二)
缓存·优化·压缩·底层原理
七仔的博客1 个月前
博客的加载速度和大小的优化、优化再优化
vue·博客·优化·gzip·live2d
Ytadpole1 个月前
MySQL 数据库优化设计:优化原理和数据库表设计技巧
数据库·mysql·优化·索引·查询·检索·表设计
患得患失9491 个月前
【ThreeJs】【性能优化】从渲染底层到业务逻辑的系统性提速方案
优化·threejs