Weitere Informationen finden Sie unter " Einrichten und Verwenden von gccgo ":
gccgo, ein Compiler für die Go-Sprache. Der gccgo-Compiler ist ein neues Frontend für GCC.
Beachten Sie, dass gccgo nicht der gc-Compiler ist
Wie in " Gccgo in GCC 4.7.1 " (Juli 2012) erläutert
Die Go-Sprache wurde immer durch eine Spezifikation definiert, nicht durch eine Implementierung. Das Go-Team hat zwei verschiedene Compiler geschrieben, die diese Spezifikation implementieren: gc und gccgo.
- Gc ist der ursprüngliche Compiler, und das go-Tool verwendet ihn standardmäßig.
- Gccgo ist eine andere Implementierung mit einem anderen Fokus
Im Vergleich zu gc ist gccgo langsamer beim Kompilieren von Code, unterstützt jedoch leistungsfähigere Optimierungen, sodass ein von gccgo erstelltes CPU-gebundenes Programm normalerweise schneller ausgeführt wird.
Ebenfalls:
- Der gc-Compiler unterstützt nur die gängigsten Prozessoren: x86 (32-Bit und 64-Bit) und ARM.
- Gccgo unterstützt jedoch alle von GCC unterstützten Prozessoren.
Nicht alle diese Prozessoren wurden gründlich auf gccgo getestet, aber viele, einschließlich x86 (32-Bit und 64-Bit), SPARC, MIPS, PowerPC und sogar Alpha.
Gccgo wurde auch auf Betriebssystemen getestet, die der GC-Compiler nicht unterstützt, insbesondere auf Solaris.
Wenn Sie den Befehl go von einer Standardversion von Go installieren, wird gccgo bereits über die -compiler
Option unterstützt : go build -compiler gccgo myprog
.
Kurzum: gccgo: mehr Optimierung, mehr Prozessoren .
Wie von OneOfOne ( Quelle ) kommentiert , gibt es jedoch häufig eine Desynchronisation zwischen dem von gccgo unterstützten go und der neuesten go-Version:
gccgo unterstützt nur bis zur Version go v1.2 . Wenn Sie also etwas Neues in 1.3 / 1.4 (Tipp) benötigen, kann gccgo nicht verwendet werden. - -
GCC Release 4.9 wird die Go 1.2 (nicht 1.3) Version von gccgo enthalten .
Die Release-Zeitpläne für die GCC- und Go-Projekte stimmen nicht überein, was bedeutet, dass 1.3 im Entwicklungszweig verfügbar sein wird, aber dass die nächste GCC-Version 4.10 wahrscheinlich die Go 1.4-Version von gccgo enthalten wird.
Zwei erwähnen in den Kommentaren die Folie von Brad Fitzpatricks Präsentation
gccgo generiert sehr guten Code
... aber es fehlt eine Escape-Analyse: Beeinträchtigt die Leistung mit vielen kleinen Zuordnungen + Müll
... GC ist nicht präzise. Schlecht für 32-Bit.
twotwotwo fügt hinzu:
Eine andere Folie erwähnt, dass die Generierung von ARM-Code ohne gccgo wackelig ist.
Angenommen, es ist eine interessante Option für Ihr Projekt, vergleichen Sie wahrscheinlich die Binärdateien für Ihren Anwendungsfall in Ihrer Zielarchitektur.
Wie peterSO kommentiert , bedeutet Go 1.5 now (Q3 / Q4 2015):
Der Compiler und die Laufzeit sind jetzt vollständig in Go geschrieben (mit einem kleinen Assembler).
C ist nicht mehr an der Implementierung beteiligt, sodass der C-Compiler, der einst zum Erstellen der Distribution erforderlich war, nicht mehr vorhanden ist .
Die Folie "Go in Go" erwähnt:
C ist weg.
Randnotiz: gccgo ist immer noch stark.
Berkant fragt in den Kommentaren, ob gccgo
was was istgc
gebootet wurde.
Jörg W Mittag antwortet:
Nein, gccgo
erschien danachgc
.
gc
wurde ursprünglich in C geschrieben. Es basiert auf Ken Thompsons C-Compiler aus dem Betriebssystem Plan9 , dem Nachfolger von Unix, der von denselben Personen entwickelt wurde.gc
wurde iterativ überarbeitet, um mehr und mehr von sich in Go zu schreiben.
gccgo
wurde von Ian Lance Taylor gestartet , einem GCC-Hacker, der nicht mit dem Go-Projekt verbunden ist.
Beachten Sie, dass der erste vollständig selbst gehostete Go-Compiler tatsächlich eine proprietäre kommerzielle Closed-Source-Implementierung für Windows war, deren Name aus meinem Gehirn genauso verschwunden zu sein scheint wie aus dem Internet. Sie behaupteten, einen selbst gehosteten Compiler in Go geschrieben zu haben, der auf Windows zu einer Zeit abzielte, als gccgo
es noch nicht existierte undgc
die Einrichtung unter Windows war äußerst schmerzhaft. (Sie mussten im Grunde eine vollständige Cygwin-Umgebung einrichten, den Quellcode patchen und aus dem Quellcode kompilieren.) Das Unternehmen scheint jedoch zusammengebrochen zu sein, bevor es jemals gelungen ist, das Produkt zu vermarkten.
Hector Chu hat im November 2009 einen Windows-Port von Go veröffentlicht. Auf
der go-lang.cat-v.org/os-ports
Seite werden auch die ersten Arbeiten von Joe / Joseph Poirier erwähnt . Auf dieser Seite :
Jede Chance, dass jemand, der Bescheid weiß, einen der Jungs ( Alex Brainman) darum bitten könnte - Hector Chu - Joseph Poirier), die an der Erstellung des Windows-Ports beteiligt sind, einen Wiki-Eintrag erstellt, in dem die Build-Umgebung aufgeführt ist?
Fügen Sie dazu hinzu (beim Schreiben von Web-Apps in Go ) ! 光 京 (Wei Guangjing) .