test_inline.c:
main.c:
GCC 10.2 不用-O选项编译之后,发现 test_inline.c 里面的 addi 变成了未解析符号,于是最后链接失败。用了 -O2 就正常了。
如果把 inline 改成 static inline,那就都正常了。
clang 10.0.1 也是这个现象。
因为这个现象,我把softfloat库放进gem5之后,我就构建出错了,这时候才发现gem5的ext/下的库在编译时都没开优化。
代码:
inline int addi(int a, int b)
{
return a + b;
}
int add3(int a, int b, int c)
{
int t = addi(a, b);
return addi(t, c);
}
main.c:
代码:
extern int add3(int a, int b, int c);
int main()
{
return add3(1,2,3);
}
GCC 10.2 不用-O选项编译之后,发现 test_inline.c 里面的 addi 变成了未解析符号,于是最后链接失败。用了 -O2 就正常了。
如果把 inline 改成 static inline,那就都正常了。
clang 10.0.1 也是这个现象。
因为这个现象,我把softfloat库放进gem5之后,我就构建出错了,这时候才发现gem5的ext/下的库在编译时都没开优化。