默认go 是支持跨平台编译的,但是如果我们引入了c语言,那么go就不支持了,需要提供CC=XXXXXX 交叉语言环境。
交叉编译环境为了搭建方便,可以使用crosstool-ng,搭建请参阅博客另外一篇文章。
搭建完成后,配置PATH路径,或者使用全路径交叉编译器的gcc路径。
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-unknown-linux-gnu-gcc CGO_LDFLAGS="-static" go build -o amd64_app
命令详解:
CGO_ENABLED=1 开启cgo编译
GOOS=linux 目标系统类型
GOARCH=amd64 目标系统构架
CC=x86_64-unknown-linux-gnu-gcc 指定gcc编译器为交叉编译器
CGO_LDFLAGS="-static" 指定gcc编译器为静态编译,依赖全部打包进去,防止编译后无法运行的情况。
go build go语言程序编译
-o amd64_app 指定输出文件名为amd64_app