2013-12-16 42 views
1

我开始学习C++,我试着运行经典的Hello World程序:错误在C++的世界您好

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout << "Hello, World!"; 
    return 0; 
} 

但是当我用GCC编译在终端,我总是得到这个错误:

Undefined symbols for architecture x86_64: 
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const", referenced from: 
     std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccpe3DPY.o 
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long) const", referenced from: 
     std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccpe3DPY.o 
    "std::cout", referenced from: 
     _main in ccpe3DPY.o 
    "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from: 
     _main in ccpe3DPY.o 
    "std::ios_base::Init::Init()", referenced from: 
     __static_initialization_and_destruction_0(int, int)in ccpe3DPY.o 
    "std::ios_base::Init::~Init()", referenced from: 
     ___tcf_0 in ccpe3DPY.o 
    "___gxx_personality_v0", referenced from: 
     Dwarf Exception Unwind Info (__eh_frame) in ccpe3DPY.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

你能告诉我为什么吗?

+5

用'g ++'编译将自动链接到stdlib中。 –

+0

您发布的代码不会产生该错误:http://ideone.com/qkh6z7 – Johnsyweb

回答

11

你已经用gcc编译了你的程序,它是一个C编译器,而不是C++编译器。改为使用g++;它知道包含C++运行时库,其中定义了那些缺失的符号。

+1

好的谢谢,并为noob问题抱歉:) – PazEr80

3

这是一个C编译器,你需要使用C++编译器,比如rob,上面说的是g ++。另外,如果你是初学者,如果你运行Windows操作系统,我强烈建议使用Microsoft Visual Studio Express;如果不是那么netbeans。