GCC может определить, на каком языке находится файл, на основе расширения файла. Однако, GCC не автоматически связывать в перспективе поддержки времени для любого языка, кроме C. На практике это означает, что вы можете компилировать программы на C++ с использованием gcc
вместо g++
но вам нужно добавить -lstdc++
директивы:
#include <iostream>
int main()
{
std::cout << "Hello world\n";
}
g++ hello.cc
gcc hello.cc -lstdc++
Более точно, вам нужно будет указать -lstdc++
, если вы используете стандартную библиотеку, исключения, оператор new
или RTTI. Например, попробуйте скомпилировать следующий без -lstdc++
:
int main()
{
try {
throw 1;
}
catch (int i)
{
return i;
}
}
Пожалуйста, обратите внимание, что STL контейнеры (включая std::string
с) использовать оператор new
по умолчанию. Строго говоря, вы должны иметь возможность использовать алгоритмы (std::min
, std::find_first_of
и т. Д.), А также некоторые другие вещи в стандартной библиотеке без -lstdc++
, но по большей части вы можете также включить его (компоновщик будет игнорировать любые библиотеки, которые вы на самом деле не ссылаются).
Нужно указать -lstdC++ для команды компоновщика. – simon