添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
            
GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)
交叉编译不支持 CGO 所以要禁用它

Makefile示例

如果经常需要编译多个平台的操作,可以将命令整合到Makefile中,go build -o 指定输出路径。

# 编译到 Linux
.PHONY: build-linux
build-linux:
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./build/main-linux ./main.go
# 编译到 macOS
.PHONY: build-darwin
build-darwin:
	CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o ./build/main-darwin ./main.go
# 编译到 windows
.PHONY: build-windows
build-windows:
	CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o ./build/main-windows.exe ./main.go
# 编译到 全部平台
.PHONY: build-all
build-all:
	make clean
	mkdir -p ./build
	make build-linux
	make build-darwin
	make build-windows
.PHONY: clean
clean:
	rm -rf ./build

Makefile直接生成所有平台

make build-all

Makefile生成linux平台

make build-linux

Makefile命令注意事项

  • make: Nothing to be done这句一般是提示你已经编译好了,而且没有对代码进行任何改动。
  • Makefile(注意大小写哦,M必须大写,其余必须小写)文件格式不规范,在all:或default:后面另起的一行命令中,行首没有TAB键的空格,或者有空格,但是是Space键的“ ”,不是Tab键的“ ”,这也是不行的! 解决方法,修改所有相关行使用Tab空格
  • demo地址:待补充

    参考文章:Golang:交叉编译到Linux、macOS、windows并运行