通常编译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