GCC kann basierend auf der Dateierweiterung bestimmen, in welcher Sprache sich eine Datei befindet. Allerdings ist GCC Link nicht automatisch zur Laufzeit Unterstützung für jede andere Sprache als C. In der Praxis bedeutet das können Sie C++ Programme mit gcc
statt g++
kompilieren, aber Sie werden die -lstdc++
Richtlinie hinzufügen müssen:
#include <iostream>
int main()
{
std::cout << "Hello world\n";
}
g++ hello.cc
gcc hello.cc -lstdc++
genauer gesagt, müssen Sie -lstdc++
angeben, wenn Sie Sie die Standard-Bibliothek verwenden, Ausnahmen, Operator new
oder RTTI. Zum Beispiel versucht, nach dem ohne -lstdc++
Kompilieren:
int main()
{
try {
throw 1;
}
catch (int i)
{
return i;
}
}
Bitte beachten Sie, dass STL-Container (einschließlich std::string
s) verwendet Operator new
standardmäßig. Genau genommen sollten Sie in der Lage sein, die Algorithmen (std::min
, std::find_first_of
, usw.) Binder und einige andere Dinge in der Standardbibliothek ohne -lstdc++
zu verwenden, aber Sie können es auch gut einbinden (der Linker ignoriert alle Bibliotheken, die Sie verwenden eigentlich nicht verlinken).
Erforderlich zum Einschließen von -lstdC++ für den Linker-Befehl. – simon