我最近遇到了在升级 debian 测试后编译一段代码的问题,得到了 gcc 6.2.1 编译器。我把它归结为这个简单的例子:
inline int func(void) {
return 0;
}
int main (int argc, char **argv) {
func();
}
Run Code Online (Sandbox Code Playgroud)
该代码不会不与下面的编译:
gcc -o exec code.c # gcc 6.2.1
它失败了:
undefined reference to 'func'
我也在同一台主机上尝试过 gcc 4.8、4.9 和 5,但都失败了。如果我添加,它会编译:
gcc -o exec code.c -O2 # gcc 6.2.1
我真的很好奇为什么它与 -O2 标志一起工作,但不是没有,我希望这能工作?