2014-06-05 16 views
17

La documentazione non dicono nulla su ciò che build vs install faCosa deve fare l'installazione?

La mia aspettativa era che è come make install; vale a dire che ci vuole la roba compilato e mette nella sua posizione finale (/usr/local/bin/my_new_toy o qualsiasi altra cosa), ma sembra che mette le cose in GOROOT/bin

posso dire andare a fare un make install - vale a dire mettere le cose altrove? Oppure scrivo un makefile (per favore dimmi di no)?

risposta

9

Se si desidera che i file binari per andare a una posizione specifica, è possibile utilizzare la variabile d'ambiente GOBIN:

La directory/bin contiene i comandi compilati. Ogni comando è denominato per nella directory di origine, ma solo l'elemento finale, non l'intero percorso. Cioè, il comando con sorgente in DIR/src/foo/quux è installato in DIR/bin/quux, non DIR/bin/foo/quux. Il foo/viene rimosso in modo che tu possa aggiungere DIR/bin al tuo PATH per ottenere i comandi installati. Se la variabile di ambiente GOBIN è impostata, i comandi vengono installati nella directory al posto di DIR/bin.

Fonte: http://golang.org/cmd/go/#hdr-GOPATH_environment_variable

GOBIN=/usr/local/bin/ go install 

Se si desidera per-progetto bin/ directory allora si può semplicemente aggiungere il vostro percorso progetto per GOPATH, tuttavia è necessario che il codice sotto $project-path/src/ e go install metterà tutto il file binari in $project-path/bin.

export GOPATH=/dir1:/dir2:/dir3 

Se GOBIN non è impostata, i binari dai/dir1/src finire in/dir1/bin, binari da/dir2/src finire in/dir2/bin, e così via (e binari da $ GOROOT/src finisce in $ GOROOT/bin).

Fonte: https://groups.google.com/forum/#!topic/golang-nuts/-mN8R_Fx-7M

Ed è completamente attraversato la mia mente, ma si può sempre e solo utilizzare (grazie JimB):

go build -o /path/binary-name 
+3

è anche possibile specificare il nome del file di output direttamente con 'andare costruire - o' – JimB

+0

Sì, aggiungilo alla risposta per completezza. – OneOfOne

+0

quindi go install è lo stesso di go build -o $ GOPATH/bin/? – pm100