Ten artykuł to tłumaczenie, oryginał znajduje się pod adresem http://golang.org/doc/install.html i jest udostępniony na licencji: Creative Commons Attribution 3.0.

Na wstępie dwie uwagi:

1) Ten tekst został przetłumaczony długo przed wydaniem GO 1, przez co jest nieaktualny. Nie mniej póki nie stworzę artykułu jak wygląda instalacja ze źródeł z nowego go, można się posiłkować tym co już jest. Główna rozbieżność ze stanem nowym polega na wprowadzeniu narzędzia go i schowaniu kompilatorów.

zobacz także: Komenda go

2) Naprawdę chcesz instalować ze źródeł? Nie widzę powodów poza poznawczymi. zobacz także: Instalacja z paczek (debian, ubuntu, windows)

Instalacja (ze źródeł)

Go lang: jak zacząć?

Go jest projektem open source, rozpowszechnianym pod licencją typu BSD. Tu wyjaśnimy jak pobrać źródła, zbudować je na komputerze i uruchomić.

Są dwie drogi by wypróbować Go. Ten dokument skupia się na kompilatorze gc Go i narzędziach (6g, 8g itd). By dowiedzieć się jak używać gccgo, bardziej tradycyjnego kompilatora używającego GCC, zobacz instrukcję

Kompilatory Go wspierają trzy różne zestawy instrukcji. Istnieją znaczące różnice w jakości kompilatorów pod różnymi architekturami.

amd64 (a.k.a. x86-64); 6g, 6l, 6c, 6a

To najbardziej dojrzała implementacja. Ten kompilator ma bardzo wydajny optymalizator i generuje dobry kod (chociaż kod wytworzony przez gccgo czasem jest znacząco lepszy)

386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a

Jest porównywalny z amd64.

arm (a.k.a. ARM); 5g,5l,5c,5a

Niekompletny. Daje wsparcie tylko dla Linuksowych binarek, słaba obsługa liczb zmiennoprzecinkowych, posiada błędy w wygenerowanym kodzie, nie ma optymalizatora. Testowany tylko pod Nexus One.

Z wyjątkiem niskopoziomowych wywołań systemowych, biblioteki uruchomieniowe programów są takie same dla wszystkich platform w tym garbage-collector typu mark-and-sweep (trwają prace nad bardziej wyrafinowanym), wydajne operowanie na fragmentach tablic i łańcuchów znaków, wsparcie dla posegmentowanych stosów i bardzo dobra implementacja gorutyn.

Kompilatory są napisane pod FreeBSD, Linuksa, Native Client i OSX (tzw. Darwin). (Wsparcie dla Windowsów jest w trakcie tworzenia i jest nie kompletne.) Pełna lista wspieranych kombinacji znajduje się w sekcji “Zmienne środowiskowe”

Zainstaluj narzędzia do C, jeśli jeszcze ich nie masz

Narzędzia do Go są napisane w C. Aby je zbudować musisz mieć zainstalowane:

  • GCC
  • standardowe biblioteki C
  • Generator parserów Bison
  • make
  • awk, i
  • edytor tekstowy ed

Na OS X, można je zainstalować za pomocą Xcode.

Na Ubuntu użyj:

sudo apt-get install bison ed gawk gcc libc6-dev make

Instalacja Mericuriala

Aby przejść do następnego kroku musisz mieć zainstalowanego Mericuriala. (Sprawdź czy wykonuje się komenda: hg. ) By zainstalować Mericuriala na większości systemów wystarcza wpisać :

sudo easy_install mercurial

(Na Ubuntu/Debianie, możesz najpierw spróbować wykonać apt-get install python-setuptools python-dev build-essential. Mericurial w repozytorium zapewne jest stary i zepsuty.)

Jeżeli się to nie uda spróbuj zainstalować Mericuriala ręcznie z http://mercurial.selenic.com/wiki/Download

Ściągnij repozytorium

Go zainstaluje się w katalogu o nazwie go. Zmień katalog roboczy na ten w którym ma się znajdować katalog go, upewnij się że taki folder nie istnieje. Następnie ściągnij repozytorium:

hg clone -r release https://go.googlecode.com/hg/ go

Zainstaluj Go

Aby zbudować dystrybucję go wykonaj:

$ cd go/src
$ ./all.bash

Jeśli wszystko pójdzie dobrze to powinieneś ujrzeć:

--- cd ../test

N known bugs; 0 unexpected bugs

---
Installed Go for linux/amd64 in /home/you/go.
Installed commands in /home/you/go/bin.
*** You need to add /home/you/go/bin to your $PATH. ***
The compiler is 6g.

gdzie N to liczba która zmienia się z wydania na wydanie, a ostatnie linijki są zależne od twojego systemu operacyjnego, architektury i katalogu użytego podczas instalacji

Więcej informacji o sposobach kontrolowania procesu buildowania znajdziesz w sekcji http://golang.org/doc/install.html#environment poniżej

Pisanie programów

Mając plik plik.go, skompilujesz go używając:

6g plik.go

6g jest kompilatorem Go dla architektury amd64; wynik działania zostanie zapisany w pliku plik.6. 6 oznacza pliki dla architektury amd64. Dla 386 i arm będzie to 8 i 5. Zatem jeśli będziesz kompilował kod pod 386, powinieneś użyć kompilatora 8g a plik wynikowy będzie się nazywał plik.8

Aby połączyć plik użyj:

$ 6l file.6

aby go uruchomić

$ ./6.out

przykładowy program:

$ cat >hello.go <<EOF
package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}
EOF
$ 6g hello.go
$ 6l hello.6
$ ./6.out
hello, world
$

Nie ma potrzeby wymieniania wszystkich zależności hello.6 (w tym przypadku pakietu fmt) w linii komend. Linker sam znajdzie te zależności w pliku hello.6

Aby tworzyć bardziej skomplikowane programy, prawdopodobnie będziesz chciał użyć Makefile. Przykłady znajdziesz w takich miejscach jak go/src/cmd/godoc/Makefile i go/src/pkg/*/Makefile http://golang.org/doc/contribute.html artykuł o współuczestniczeniu w projekcie Go przedstawia bardziej szczegółowe informacje na temat procesu budowania i testowania programów w Go.

Co dalej?

Przeczytaj tutorial GO

Stwórz aplikację webową śledząc wpisy na http://golang.org/doc/codelab/wiki/

Koniecznie przeczytaj Effective Go, aby się nauczyć idiomatycznego kodu Go

Najbardziej szczegółowe informacje znajdziesz w polskiej lub oryginalnej dokumentacji.

Aktualizacje

Nowe wydania są ogłaszane na liście dyskusyjnejhttp://groups.google.com/group/golang-announce

Go Nuts http://groups.google.com/group/golang-nuts. Aby zaktualizować wersję wystarczy, że wykonasz:

$ cd go/src
$ hg pull
$ hg update release
$ ./all.bash

Społeczność

By uzyskać szybką pomoc, najlepiej sprawdzić czy jest ktoś na kanale #go-nuts na serwerze IRC http://freenode.net/

Oficjalna grupa dyskusyjna to Go Nuts Błędy można zgłaszać na bugtrakerze Zainteresowani postępami w projekcie mogą śledzić listę mailingową, na której pojawiają się komunikaty z podsumowaniem zmian w repozytorium Go

Zmienne środowiskowe

Środowisko kompilacyjne Go może być dostrajane pięcioma zmiennym. Żadne z nich nie są wymagane do poprawnego zbudowania, ale może zajść potrzeba modyfikacji wartości domyślnych

$GOROOT

Katalog główny Go, najczęściej $HOME/go. To domyślna ścieżka do źródeł go, tam gdzie uruchamiany jest skrypt all.bash. Jeśli zdecydujesz, że nie chcesz ustalić wartości tej zmiennej, będziesz musiał uruchamiać gomake zamiast make czy gmake podczas tworzenia programów w Go używając standardowych makefile.

$GOOROOT_FINAL

Tą wartość programy używają jeśli $GOROOT jest nieustawiona. Domyślnie przyjmuje wartość $GOROOT. Jest to przydatne jeśli chcesz zbudować go w jednej lokalizacji a potem przenieść gdzie indziej. Wtedy ustaw $GOROOT_FINAL jako docelową lokalizację Go

$GOOS i $GOARCH

To nazwy docelowego systemu operacyjnego i architektury. Domyślnie przyjmuje wartości aktualnego systemu i architektury

Dla $GOOS mamy do wyboru: linux, freebsd, darwin (Mac OS X 10.5 or 10.6) i nacl (Native Client). $GOARCH może być ustawiony jako:

amd64 (64-bit x86, najbardziej dopracowana wersja), 386 (32-bit x86), i arm (32-bit ARM, nie kompletna implementacja). Poprawne kombinacje $GOOS i $GOARCH:

$GOOS   $GOARCH
darwin  386
darwin  amd64
freebsd 386
freebsd amd64
linux   386
linux   amd64
linux   arm niekompletna
nacl    386
windows 386 niekompletna

$GOBIN

Miejsce w którym będą składowane programy wykonywalne. Domyślnie jest to $GOROOT/bin. Po instalacji, zapewne zechcesz dołączyć tą ścieżkę do $PATH, by móc wygodniej korzystać z narzędzi Go

$GOARM (arm, domyślnie=6)

Wersja architektury ARM pod którą biblioteki trafiają. ARMv6 ma bardziej wydajne polecenia synchronizacyjne. Ustawienie $GOARM na wartość 5 skompiluje biblioteki uruchomieniowe używając tylko instrukcji SWP, które będą działały także na starszych architekturach.

Uruchamianie kodu z wersji 6 na starszych rdzeniach będzie powodowało “illegal instruction trap”.

Zauważ, że $GOARCH I $GOOS określają docelowe środowisko, a nie to w którym aktualnie pracujesz. Dzięki temu masz możliwość kompilowania na wiele platform. Architektura jest tutaj rozumiana rodzaj plików wykonywalnych na wskazanym środowisku: x86-64 wykorzystujący 32-bitowy system operacyjny musi ustawić GOARCH na 386, a nie amd64.

Jeśli chcesz nadpisać domyślne wartości, ustaw te zmienne środowiskowe w swoim profilu shellowym ($HOME/.bashrc, $HOME/.profile). Ustawienie powinny wyglądać mniej więcej tak:

export GOROOT=$HOME/go
export GOARCH=386
export GOOS=linux