问题:Golang如何在win上编译linux二进制文件(交叉编译)及编译参数介绍
1、交叉编译
// cpu架构
go env -w GOARCH=amd64
// 程序运行的最终系统,linux、windows、darwin(苹果macos系统)
go env -w GOOS=linux
// window编译设置Cgo模块关闭,因为windows上做cgo开发太麻烦,如果引用了Cgo库库,那么请在linux环境开发、编译
go env -w CGO_ENABLED=0
// 编译出最终可执行文件,进入根目录(GinSkeleton所在目录,也就是 go.mod 所在的目录)
// 编译时建议追加参数:-ldflags "-w -s" ,同时会压缩编译后的体积。
// -w 表示去除调试信息,禁止gdb调试,
// -s 表示去除符号表(符号表在链接时起着按符号寻址的作用,静态编译后用不到)
// 追加参数编译后的程序体积也会比原来减少25%左右.
// -trimpath 表示去除绝对路径信息,只保留基于 go.mod 开始的相对路径信息
// web|api|cli 三个目录选择其一即可,表示编译的入口目录
go build -o demo_goskeleton -ldflags "-w -s" -trimpath cmd/(web|api|cli)/main.go
2、go build参数
-o:output 指定编译输出的名称,代替默认的包名
-i:install 安装作为目标的依赖关系的包(用于增量编译提速)。
80%的人都看过的文章
本文来自凡蜕博客(https://blog.ysboke.cn), 转载请带上地址.。