Go 多平台打包 之 makfile

4 min read

我们编写一个简单的 Makefile ,里面指定了编译不同平台和架构使用的命令。考虑到我们的 Docker 镜像只需要 linux/amd64linux/arm64 两个平台,所以我们只需要编写下面的两行命令。 当然,如果你需要一个可以本地使用,能直接编译所有平台的二进制可执行文件的 makefile ,可以参考仓库中的 Makefile 文件。

all: build-linux-amd64 build-linux-arm64

build-linux-amd64:
	mkdir -p build
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/hello_linux_amd64 main.go

build-linux-arm64:
	mkdir -p build
	CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o build/hello_linux_arm64 main.go

需要注意的是,第一条规则 all 为默认的规则,执行 make 时就执行它指定的目标。mkdir -p build 保证了输出目录一定存在。

如果你使用 macOS 或者 Linux 系统,可以试着运行 make 命令,它会在当前目录下创建一个 build 文件夹,并将生成的二进制可执行文件都放在里面。