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
Wszystko o języku programowania Go