Подтвердить что ты не робот

Как скомпилировать С++-программу в Linux?

Я сделал файл hi.cpp и написал следующую команду:

#include <iostream>
using namespace std;
int main ()
{
  cout << "Hello World! ";
  cout << "I'm a C++ program";
  return 0;
}

то я запустил его на машине RHEL 6 со следующей командой

gcc hi.cpp

и я получил некоторые ошибки, которые выглядят следующим образом:

[[email protected] ~]$ gcc hi.cpp
/tmp/cc32bnmR.o: In function `main':
hi.cpp:(.text+0xa): undefined reference to `std::cout'
hi.cpp:(.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> >&, const char*)'
hi.cpp:(.text+0x19): undefined reference to `std::cout'
hi.cpp:(.text+0x1e): 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> >&, const char*)'
/tmp/cc32bnmR.o: In function `__static_initialization_and_destruction_0(int, int)':
hi.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::Init()'
hi.cpp:(.text+0x51): undefined reference to `std::ios_base::Init::~Init()'
/tmp/cc32bnmR.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
[[email protected] ~]$ 

Что означают эти ошибки? Мой код правильный, то почему я получаю ошибки?

4b9b3361

Ответ 1

Используйте g++

g++ -o hi hi.cpp

g++ для С++, gcc для C, хотя с -libstdС++ вы можете скомпилировать С++. Большинство людей этого не делают.

Ответ 2

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

Или используйте make: make hi

Ответ 3

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

g++   -O4    -Wall hi.cpp -o hi.out
     ^^^^^   ^^^^^^
  optimize  related to coding mistakes

Более подробно вы можете обратиться к man g++ | less.

Ответ 4

Попробуйте следующее:

g++ -o hi hi.cpp

gcc только для C

Ответ 5

$g++ 1st.cpp -o 1st

$./1st

если вы обнаружили какую-либо ошибку, сначала установите g++, используя код ниже

$sudo apt-get install g++

затем установите g++ и используйте выше код запуска

Ответ 6

g++ -o foo foo.cpp

g++ → Драйвер для компилятора cc1plus

-o → Указывает выходной файл (foo - это имя выходного файла здесь. Может быть любое имя)

foo.cpp → Исходный файл для компиляции

В выполнить скомпилированный файл просто введите

./foo