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

Очень простая программа, не работающая в С++?

Я не могу понять, почему это не работает...

Я работаю в Linux

g++ ничего не делает

gcc печатает следующее:

/tmp/ccyg7NDd.o: In function `main':
test.cc:(.text+0x14): undefined reference to `std::cout'
test.cc:(.text+0x19): 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*)'
test.cc:(.text+0x21): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
test.cc:(.text+0x29): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'
/tmp/ccyg7NDd.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cc:(.text+0x51): undefined reference to `std::ios_base::Init::Init()'
test.cc:(.text+0x56): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccyg7NDd.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

код:

#include<iostream>
#include<stdio.h>

int main(){

std::cout<<"test "<<std::endl;
return 0;

};
4b9b3361

Ответ 1

gcc main.cpp -lstdc++

или

g++ main.cpp

Ответ 2

gcc является компилятором C, вам нужно использовать g++ (или использовать gcc с опцией -lstdc++, как указано другими). Если ничто не печатается после того, как вы используете g++, это то, что вы имеете в виду, вам нужно выполнить скомпилированный двоичный файл после его создания (т.е. Когда g++ завершает работу).

main.cpp:

#include<iostream>

int main(){

std::cout<<"test "<<std::endl;
return 0;

};

Сложение:

g++ main.cpp -o main

Execute:

./main

Вывод:

test 

Ответ 3

Это код на С++, поэтому вы должны использовать g++, а не gcc. Также #include<stdio.h> не требуется

Ответ 4

Я думаю, вы ошибочно связываетесь с командой компилятора C вместо команды компилятора С++. Попробуйте следующее:

g++ test.cc -o test

Ответ 5

Я думаю, что основная проблема заключается в том, что двоичное имя "test" на самом деле уже отделено от системы linux. Ввод "man test" отображает руководство для тестового двоичного кода. У меня была ТОЧНАЯ такая же проблема. Это было разрешено просто путем компиляции двоичного файла в нечто иное, чем "тест".

Ответ 6

Компиляторы ограничивают пробелы. Поместите пробел между всеми ключевыми словами и < Таким образом, cout < должен быть cout <. То же самое с <