- 论坛徽章:
- 0
|
10可用积分
如题,一个最简单的helloworld程序:
$ cat test.cpp
#include<stdio.h>
int main(void){
printf("hw!\n" ) ;
}
编译不通过
gcc test.cpp
/tmp/ccenMpAZ.o: (.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld 返回 1
我必须得gcc test.cpp -lstdc++才行,gcc test.cpp -lc都不行
但是如果我mv test.cpp test.c然后gcc test.c就没问题了!
这是为什么呢? printf明明是c运行时库的内容, 为何.cpp的时候就得-lstdc++?
环境: centOS5.2 gcc 4.1.2 , 相同的程序在solaris8+gcc2.95.2下面就不存在这个问题。
难道是编译器版本不同导致的么? 还是别的什么原因呢?
大虾指点,10分感谢! |
最佳答案
查看完整内容
gcc 是根据源文件的后缀来确定源码所使用的语言以及默认要链接的库的,这个可以用 -v 看到。有。
|