Почему я не могу скомпилировать HelloWorld в C ++? - PullRequest
4 голосов
/ 01 февраля 2012

Я пытаюсь скомпилировать простую программу Hello World на C ++, но постоянно получаю следующую ошибку ... почему?

gcc -o HelloWorldCompiled HelloWorld.cc
/tmp/ccvLW1ei.o: In function `main':
HelloWorld.cc:(.text+0xa): undefined reference to `std::cout'
HelloWorld.cc:(.text+0xf): 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/ccvLW1ei.o: In function `__static_initialization_and_destruction_0(int, int)':
HelloWorld.cc:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
HelloWorld.cc:(.text+0x42): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccvLW1ei.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

Вот моя программа:

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello World\n";
}

Ответы [ 5 ]

20 голосов
/ 01 февраля 2012

Используйте g++, а не gcc.gcc - это компилятор C, тогда как g ++ - это компилятор C ++.

g++ -o hwcompiled helloworld.cc

Затем для выполнения вашей скомпилированной программы:

./hwcompiled
3 голосов
/ 01 февраля 2012

Вы должны использовать g++, а не gcc.Кажется, gcc понимает, что это C ++ (поэтому он не дает синтаксических ошибок), но «забывает» связать его со стандартной библиотекой C ++.

1 голос
/ 01 февраля 2012

Компилировать с g++ вместо gcc.

0 голосов
/ 02 февраля 2012

Или вы все еще могли бы использовать gcc, но явно связываться с библиотекой c ++ таким образом:

gcc -o HelloWorldCompiled HelloWorld.cc -lstdc++
0 голосов
/ 01 февраля 2012

Попробуйте использовать g++ для компиляции кода на C ++ вместо gcc, который используется для компиляции программ на языке C.

...