-1

好的,所以我试图找回 c++,并从一个基本程序开始。

#include <iostream>

using namespace std;

int main()
{
 cout << "So This Is It.";
 cout << "\n";
 return 0;
}

这是结果:

-->gcc -g -o HELLO HELLO.cpp
/tmp/ccLZLm5N.o: In function `main':
/root/Programming/Learning/C++/HELLO.cpp:9: undefined reference to `std::cout'
/root/Programming/Learning/C++/HELLO.cpp:9: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/root/Programming/Learning/C++/HELLO.cpp:10: undefined reference to `std::cout'
/root/Programming/Learning/C++/HELLO.cpp:10: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccLZLm5N.o: In function `__static_initialization_and_destruction_0':
/usr/include/c++/4.4/iostream:72: undefined reference to `std::ios_base::Init::Init()'
/usr/include/c++/4.4/iostream:72: undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccLZLm5N.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

我的编译器:

-->gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

那么我可以请有关修复的一些信息吗?或者。如果我遇到任何更简单的语法问题,我该如何找到正确的信息?

4

1 回答 1

3

您使用了C编译器而不是C++编译器。gcc适用于 C,g++适用于 C++。GCC 的链接器将链接到 C 标准库,该标准库不包含 C++ 标准库提供的函数,从而导致未定义的引用。

所以使用正确的g++

g++ -g -o HELLO HELLO.cpp

补充说明:

通常gcc这样标识 C++ 源代码。g++但是,如果您没有自己安装,很可能您的 Ubuntu 安装尚未安装。请您的主管安装g++或自行安装g++

sudu apt-get install g++

而且由于您已经在安装东西,请获取gdbvalgrind进行调试。

于 2013-03-13T06:40:29.820 回答