Puoi vedere di più in " Configurazione e utilizzo di gccgo ":
gccgo, un compilatore per il linguaggio Go. Il compilatore gccgo è un nuovo frontend per GCC.
Nota che gccgo non è il compilatore gc
Come spiegato in " Gccgo in GCC 4.7.1 " (luglio 2012)
Il linguaggio Go è sempre stato definito da una specifica, non da un'implementazione. Il team di Go ha scritto due diversi compilatori che implementano queste specifiche: gc e gccgo.
- Gc è il compilatore originale e lo strumento go lo utilizza per impostazione predefinita.
- Gccgo è un'implementazione diversa con un focus diverso
Rispetto a gc, gccgo è più lento nella compilazione del codice ma supporta ottimizzazioni più potenti, quindi un programma vincolato alla CPU creato da gccgo di solito verrà eseguito più velocemente.
Anche:
- Il compilatore gc supporta solo i processori più diffusi: x86 (32 bit e 64 bit) e ARM.
- Gccgo, tuttavia, supporta tutti i processori supportati da GCC.
Non tutti questi processori sono stati accuratamente testati per gccgo, ma molti lo hanno, inclusi x86 (32 bit e 64 bit), SPARC, MIPS, PowerPC e persino Alpha.
Gccgo è stato testato anche su sistemi operativi che il compilatore gc non supporta, in particolare Solaris.
se si installa il comando go da una versione standard di Go, già supporti gccgo tramite l' -compiler
opzione di: go build -compiler gccgo myprog
.
In breve: gccgo: più ottimizzazione, più processori .
Tuttavia, come commentato da OneOfOne ( fonte ), c'è spesso una desincronizzazione tra go supportato da gccgo e l'ultima versione di go:
gccgo supporta solo fino alla versione go v1.2 , quindi se hai bisogno di qualcosa di nuovo nella 1.3 / 1.4 (suggerimento) gccgo non può essere usato. -
La versione 4.9 di GCC conterrà la versione Go 1.2 (non 1.3) di gccgo .
I programmi di rilascio per i progetti GCC e Go non coincidono, il che significa che 1.3 sarà disponibile nel ramo di sviluppo ma che il prossimo rilascio di GCC, 4.10, avrà probabilmente la versione Go 1.4 di gccgo.
twotwotwo menziona nei commenti la diapositiva della presentazione di Brad Fitzpatrick
gccgo genera un codice molto buono
... ma manca di analisi di fuga: uccide le prestazioni con molti piccoli allocs + spazzatura
... GC non è preciso. Male per 32 bit.
twotwotwo aggiunge:
Un'altra diapositiva menziona che la generazione di codice ARM non gccgo è instabile.
Supponendo che sia un'opzione interessante per il tuo progetto, probabilmente confronta i binari per il tuo caso d'uso sull'architettura di destinazione.
Come commenta peterSO , Go 1.5 ora (Q3 / Q4 2015) significa:
Il compilatore e il runtime sono ora scritti interamente in Go (con un piccolo assemblatore).
C non è più coinvolto nell'implementazione, quindi il compilatore C che una volta era necessario per costruire la distribuzione è sparito .
La diapositiva "Go in Go" menziona:
C è andato.
Nota a margine: gccgo sta ancora andando forte.
Berkant chiede nei commenti se gccgo
è da cosa è gc
stato avviato il bootstrap.
Jörg W Mittag risponde:
No, è gccgo
apparso dopo gc
.
gc
è stato originariamente scritto in C. Si basa sul compilatore C di Ken Thompson dal sistema operativo Plan9 , il successore di Unix, progettato dalle stesse persone. gc
è stato modificato in modo iterativo per avere sempre più di se stesso scritto in Go.
gccgo
è stato avviato da Ian Lance Taylor , un hacker di GCC non affiliato al progetto Go.
Si noti che il primo compilatore Go completamente auto-ospitato era in realtà un'implementazione commerciale proprietaria closed-source per Windows il cui nome sembra essere svanito dal mio cervello nello stesso modo in cui ha fatto da Internet. Affermavano di avere un compilatore self-hosted scritto in Go, mirato a Windows in un momento in cui gccgo
non esisteva ancora ed gc
era estremamente doloroso da configurare su Windows. (Fondamentalmente dovevi configurare un ambiente Cygwin completo, patchare il codice sorgente e compilare dal sorgente.) La società sembra aver abbandonato, tuttavia, prima di riuscire a commercializzare il prodotto.
Hector Chu ha rilasciato un port di Go per Windows nel novembre 2009.
E la go-lang.cat-v.org/os-ports
pagina menziona anche il lavoro iniziale di Joe / Joseph Poirier . In questa pagina :
C'è qualche possibilità che qualcuno che sappia possa richiedere che uno dei ragazzi ( Alex Brainman - Hector Chu - Joseph Poirier) coinvolti nella produzione del port di Windows possa creare una voce wiki che dettaglia il proprio ambiente di compilazione?
Aggiungete a ciò (in Writing Web Apps in Go ) ! 光 京 (Wei Guangjing) .