本文主要是介绍gcc: -O2 优化选项的一个副作用:可以掩盖链接,符号未定义错误 undefined reference to,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个-O2 优化选项,可以掩盖链接错误。因为这个包含130多项的优化选项。里面有关于四代码的优化。
假如一个函数A里调用了另一个函数B,但是函数B是外部定义的符号,而且没有定义。
同时如果A函数是个死函数的话,-O2,可能将这个函数A优化为如下的方式,直接返回。看似从未调用这个函数。
(gdb) disass set_shared_ip_state_down
Dump of assembler code for function A:0x000000001008f4c0 <+0>: mov $0x1,%eax0x000000001008f4c5 <+5>: retq
所以看问题时,需要注意这一点,如果用-O2 编译链接工程,没有问题。并不一定代表去掉 -O2 就可以链接成功。
这篇关于gcc: -O2 优化选项的一个副作用:可以掩盖链接,符号未定义错误 undefined reference to的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!