通常編譯go程序,都是用go build,或者go install, go install實際與go build做的事情是一樣的,不同的是go install最後會把可執行文件保存在$GOPATH/bin目錄下面,所以執行go install前提是要指定GOPATH環境變量。
除了直接用go 命令外,也可以把go 命令都寫到makefile裏面,然後直接執行make就可以編譯出可執行文件。關於Makefile的具體語法這裏不作詳細介紹,可以參考linux下make命令的用法,下面通過一個栗子演示下:
export GOROOT=$(shell realpath $(shell dirname $(shell which go))/..)
export GOPATH=$(shell pwd)
all: hello
echo "Done!"
hello:
go install github.com/user/hello
.PHONY: clean test
test:
@echo "testing..."
go test github.com/user/stringutil
@echo "test Done!"
clean:
rm -f hello bin/hello
rm -rf pkg/*
說明下,以上makefile是在ubuntu linux 386環境上實驗的,其實go語言目前支持intel 32bits, 64bits, ARM這些平臺,後續可能還會支持更多平臺,所以這裏說明下,如果想要編譯跨平臺的可執行文件,比如我要編譯一個在arm平臺上執行的程序,這時就需要再多指定幾個環境變量(注:上面因爲我的go直接安裝的是linux 32bit 386,所以平臺,系統這些環境變量即都爲默認值,默認值就是當前宿主系統)。下面幾個環境變量指明瞭平臺和系統:
export GOARCH=arm
export GOOS=linux