Вопрос: Как скомпилировать программу на C ++ с помощью компилятора gcc?
info.c:
#include<iostream>
using std::cout;
using std::endl;
int main()
{
#ifdef __cplusplus
cout << "C++ compiler in use and version is " << __cplusplus << endl;
#endif
cout <<"Version is " << __STDC_VERSION__ << endl;
cout << "Hi" << __FILE__ << __LINE__ << endl;
}
и когда я пытаюсь скомпилировать info.c
$ gcc info.C
Undefined first referenced
symbol in file
cout /var/tmp/ccPxLN2a.o
endl(ostream &) /var/tmp/ccPxLN2a.o
ostream::operator<<(ostream &(*)(ostream &))/var/tmp/ccPxLN2a.o
ostream::operator<<(int) /var/tmp/ccPxLN2a.o
ostream::operator<<(long) /var/tmp/ccPxLN2a.o
ostream::operator<<(char const *) /var/tmp/ccPxLN2a.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
Разве компилятор gcc не способен компилировать программы на C ++? В связи с этим, в чем разница между gcc и g ++. Благодаря,
Ответы:
gcc действительно может отлично компилировать код C ++. Полученные вами ошибки являются ошибками компоновщика , а не компилятора.
Скорее всего, если вы измените строку компиляции на следующую:
gcc info.C -lstdc++
что позволяет связать его со стандартной библиотекой C ++, тогда он будет работать нормально.
Однако вам стоит просто упростить себе жизнь и использовать g ++.
РЕДАКТИРОВАТЬ:
Руп лучше всего говорит об этом в своем комментарии к другому ответу:
источник
Если вы дадите коду расширение .c, компилятор будет думать, что это код C, а не C ++. А драйвер компилятора C ++ называется g ++, если вы используете драйвер gcc, у вас будут проблемы с компоновщиком, так как стандартные библиотеки C ++ не будут связаны по умолчанию. Итак, вы хотите:
g++ myprog.cpp
И даже не думайте об использовании расширения .C в верхнем регистре, если вы никогда не хотите переносить свой код и готовы к ненависти со стороны тех, с кем вы работаете.
источник
.C
(заглавное) расширение расширением С ++. Следующее работает нормально:gcc test.C -lstdc++ -o test
илиg++ test.C -o test
.использовать
g++
вместоgcc
.источник
По умолчанию gcc выбирает язык на основе расширения файла, но вы можете заставить gcc выбрать другой язык серверной части с параметром -x, таким образом:
gcc -x c++
Дополнительные параметры подробно описаны на странице руководства gcc в разделе «Параметры, управляющие типом вывода». См., Например, http://linux.die.net/man/1/gcc (поиск по странице по тексту
-x language
).Эта возможность очень полезна в случаях, когда gcc не может угадать язык, используя расширение файла, например, если вы генерируете код и передаете его gcc через stdin.
источник
Разница между gcc и g ++:
gcc | g++ compiles c source | compiles c++ source
используйте g ++ вместо gcc для компиляции исходного кода на C ++.
источник
Если я правильно помню, gcc определяет тип файла по суффиксу. Итак, сделайте его foo.cc, и он должен работать.
И, чтобы ответить на ваш другой вопрос, это разница между "gcc" и "g ++". gcc - это интерфейс, который выбирает правильный компилятор.
источник
У меня это сработало. Всего одна строка кода в cmd.
Сначала убедитесь, что вы установили компилятор gcc (для c) или g ++ (для c ++).
В cmd для типа gcc:
gcc --version
в cmd для типа g ++:
g ++ --version
Если он установлен, продолжайте.
Теперь скомпилируйте ваш .c или .cpp с помощью cmd
для синтаксиса .c :
gcc -o exe_filename yourfilename.c
Пример:
gcc -o myfile myfile.c
Здесь exe_filename (myfile в примере) - это имя вашего .exe файла, который вы хотите создать после компиляции (Примечание: я не помещал здесь никаких расширений). И yourfilename.c (myfile.c в примере) - это ваш исходный файл с расширением .c.
Теперь перейдите в папку, содержащую ваш файл .c, здесь вы найдете файл с расширением .exe. Просто откройте его. Ура..
Для синтаксиса .cpp :
g ++ -o exe_filename yourfilename.cpp
После этого процесс такой же, как и для .c.
источник