背景
go语言开发过程中经常会遇到"在macOS上开发",可执行程序在Linux上运行的场景,这样就需要用到交叉编译了;
一般web项目
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
即可完成go build;
注意:
执行 export CGO_ENABLED=0,export GOOS=linux,export GOARCH=amd64 后,
再执行go build main.go不能完成编译,需要将其写成一行
需要用到CGO_ENABLED的项目,例如含有sqllite3的依赖
GOOS=linux CGO_ENABLED=1 GOARCH=amd64 CC=/Users/leon/go/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-gcc CGO_LDFLAGS="-static" \
go build -o custom_preject_name ./cmd
- 将CGO_ENABLED设置为1
- CC默认是"clang",需要改成gcc-4.8.1-for-linux64,由于没有这个包,则手动下载到本地,指名路径即可;
- 加上 CGO_LDFLAGS="-static"
gcc-4.8.1-for-linux64 下载地址:
百度网盘
提取密码: qs8w