Compiler für Go

Gc

Gc ist der offizielle Compiler von Google. Er wurde in C geschrieben und erzeugt statische Binaries. Derzeit werden nur die Architekturen i386, amd64 und ARM (armel und armhf) und auf Intel-Prozessoren die Betriebssysteme Linux, FreeBSD, Windows und MacOS unterstützt.

Die jeweils aktuelle Version des Compiler kann hier herunter geladen werden. Für Debian Wheezy ist er als Paket golang verfügbar.

Ein Go-Programm kann mit Gc direkt ausgeführt oder compiliert werden. Bei der direkten Ausführung wird es zunächst unterhalb von /tmp compiliert und dann ausgeführt.

$ go run hello.go

$ go build hello.go
$ ./hello

Derzeit gibt es die Planung, Gc künftig in Go zu schreiben. Dabei soll Gc nicht neu geschrieben, sondern mit einem (noch zu erstellenden) automatischen Tool von C nach Go konvertiert werden.

GccGo

GccGo ist ein Compiler auf Basis der GNU Compiler Collection. Das dazugehörige Debian-Paket ist gccgo. Es werden alle offiziellen Architekturen in Debian Wheezy unterstützt.

$ gccgo -Wall -O2 -s -o hello hello.go
$ ./hello

GccGo erzeugt dynamisch gelinkte Binaries. Sie sind üblicherweise gegen die folgenden Bibliotheken gelinkt:

$ ldd hello
    linux-vdso.so.1 =>  (0x00007fffb31ff000)
    libgo.so.0 => /usr/lib/x86_64-linux-gnu/libgo.so.0 (0x00007fa704c26000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa7049a4000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa70478d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa704403000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fa707938000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa7041e7000)

Weitere Compiler

Neben den beiden oben genannten Compilern gibt es zwei weitere Implementierungen von Go.