Was genau ist G ++?

440
John Lee

Es gibt eine Sache, die ich nicht verstehe - und das ist die Frage, was ist g ++?

Ich habe nach dem Wide Web gesucht (zumindest in jeder Hinsicht). Kein Ergebnis (das, was ich g ++ am nächsten gekommen bin, ist das Folgende ).

Ist also g ++ eine Bibliothek für den GCC-Compiler (oder ist es selbst ein Compiler)? Ich weiß das, indem ich tippe

$sudo apt-get install g++ 

In Debian-basierten Systemen wird g ++ installiert. Aber jetzt bin ich ziemlich verwirrt, was g ++ ist. Ist es also eine C ++ - Bibliothek oder ein Compiler? Die Suche nach g ++ bei Google (ich wette auch auf andere Suchmaschinen) liefert meines Wissens keine hilfreichen Ergebnisse.

Danke für die Antwort.

1
Ich habe gerade "g ++" gegoogelt und [das war die erste Frage] (https://stackoverflow.com/q/172587/1937994). Die Antworten sind ziemlich gut. gronostaj vor 5 Jahren 5
@gronostaj danke! Ich habe das gelesen. John Lee vor 5 Jahren 0
"gibt keine hilfreichen Ergebnisse zurück." Ich bin anderer Ansicht. Wie führen Sie diese Suche durch? SiXandSeven8ths vor 5 Jahren 0

1 Antwort auf die Frage

1
plugwash

der GCC-Compiler

Eine Verwirrung ist hier, dass GCC mehrere Bedeutungen hat, manchmal kann es sich speziell auf den C-Compiler beziehen ("GNU C-Compiler"), manchmal kann es sich auf die gesamte Compiler-Sammlung beziehen ("GNU-Compiler-Collection").


Die GNU-Compiler-Auflistung ist, wie der Name schon sagt, eine Auflistung von Compilern, die etwas Code gemeinsam verwenden. Zu der Auflistung gehören ein C-Compiler und ein C ++ - Compiler.

Die Binärdateien "gcc" und "g ++" sind "Compiler-Treiber". Sie verarbeiten die Befehlszeilen und rufen die Programme (Compiler, Linker, Präprozessor, falls nicht integriert) auf, die die eigentliche Arbeit mit den richtigen Optionen ausführen.

Die eigentlichen Compiler sind "cc1" für C und "cc1plus" für C ++.

"g ++" enthält zusätzliche Verhaltensweisen, die spezifisch für C ++ sind, sodass ein C ++ - Programm außerhalb des Postens kompiliert und verknüpft werden kann. Weitere Informationen finden Sie unter https://stackoverflow.com/a/173007/5083516 .


Nun zu den Debian-Paketen.

Debian-Namen sind "gcc" und "g ++" - Binärdateien mit einem Architekturpräfix und einem Versionssuffix. So verwende ich zum Beispiel auf dem Debian-System, das ich zum Schreiben dieses Beitrags verwende. "G ++" ist ein Symlink zu "g ++ - 6", wiederum ist ein symbolischer Link zu x86_64-linux-gnu-g ++ - 6

Das Debian-Paket "g ++" enthält den Compiler nicht wirklich, es enthält lediglich die symbolischen Links von nicht versionierten Namen zu versionierten Namen und hängt (in Debian-Stretch) von "cpp", "g ++ - 6", "gcc" und " gcc-6 "(Andere Versionen haben eine andere Versionsnummer).

Das Debian-Paket "g ++ - 6" enthält die eigentlichen Binärdateien für g ++ Version 6.x (x86_64-linux-gnu-g ++ - 6 unter x86-64) und cc1plus (in einem Verzeichnis, das für die Compilerversion und das Ziel spezifisch ist die Architektur).

"g ++ - 6" hängt wiederum von "libstdc ++ - 6-dev" ab. Dieses enthält die Header der C ++ - Standardbibliothek, die statische Version der C ++ - Standardbibliothek und einen Symlink zur dynamischen Version der C ++ - Standardbibliothek (und ein ein paar andere statische Bibliotheken, die nur unter ungewöhnlichen Umständen von Bedeutung sind)

"libstdc ++ - 6-dev" hängt wiederum von "libstdc ++ 6" ab, das die dynamische Version der C ++ - Standardbibliothek enthält (beachten Sie, dass die 6 in libstdc ++ - 6-dev und die 6 in libstdc ++ 6 auf verschiedene Dinge verweisen Im ersten Fall handelt es sich um die Version des Compilers, im letzteren Fall um die Soverion der Standard-C-Bibliothek.

Die Installation des "g ++" - Pakets zieht also alles ein, was Sie zum Schreiben von Programmen in C ++ benötigen