2011-04-08 66 views
2

我的代碼是在gcc中編譯cpp程序時出現問題

#include<iostream> 

using namespace std; 
int main() 
{ 
    cout <<"hi"; 
    return 0; 
} 

我用以下代碼編譯:

gcc d.cpp -o d 

錯誤如下

Undefined      first referenced 
symbol        in file 
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator [](unsigned int) const/var/tmp//ccyDVhhA.o 
std::cout       /var/tmp//ccyDVhhA.o 
std::ios_base::Init::~Init()  /var/tmp//ccyDVhhA.o 
std::ios_base::Init::Init()   /var/tmp//ccyDVhhA.o 
__gxx_personality_v0    /var/tmp//ccyDVhhA.o 
std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_tr aits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)/va r/tmp//ccyDVhhA.o 
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() c onst/var/tmp//ccyDVhhA.o 
ld: fatal: Symbol referencing errors. No output written to d 
collect2: ld returned 1 exit status 

上面的代碼有什麼錯誤?

+0

我不能有多少次我看到,當我移動類似的錯誤c到C++ – hhafez 2011-04-08 05:59:27

+0

檢查:http://stackoverflow.com/questions/172587/what-is-the-difference-between-g-and-gcc/173007#173007 – 2011-04-08 06:30:14

回答

1
g++ d.cpp -o d 

應該使用克++爲C++程序彙編鏈接到C++標準庫。

+0

等等,真的嗎?我認爲GCC自動檢測類型? (我試着編譯一個Java文件,它說Java不支持...) – Mehrdad 2011-04-08 06:14:12

+0

@Mehrdad - 我不確定我們是否可以配置gcc來做到這一點。但默認情況下,它不能鏈接到C++庫。 – Mahesh 2011-04-08 06:16:32

+0

@Mahesh:是的,很奇怪......有趣。 – Mehrdad 2011-04-08 06:21:33

3

你應該用g++而不是gcc來編譯你的C++程序。代碼中沒有任何錯誤,但是如果使用gcc和這些參數,那麼程序將不會與C++標準庫鏈接。

1

代碼應該編譯罰款與C++編譯器,但你正在使用gcc(C編譯器)編譯它需要使用G ++