编译
手动部署
简单点,直奔主题,使用命令:
go build -o xxxx
将代码编译为二进制文件,-o 和gcc 中的作用一样,指定二进制目录和名字
go build -o abc/xxx表示把代码编译到./abc/xxx
环境变量
编译的时候为了满足不同平台条件,需要进行比较细致的调节,一般使用以下环境变量调整
例子:
// 当前指令使用,空格隔开
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main
// 如果想永久设置,需要把他们配置成系统的环境变量,具体内容不展开描述
去除调试信息
Go 编译器默认编译出来的程序会带有符号表和调试信息,一般来说 release 版本可以去除调试信息以减小二进制体积。
使用选项ldflags="-s -w",去掉符号表和调试信息,一般能减小 20%的大小
例子:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o main
使用 upx 压缩
upx 是一个常用的压缩动态库和可执行文件的工具,通常可减少 50-70% 的体积。
upx 的安装方式非常简单,我们可以直接从 github 下载最新的 release 版本
支持 Windows 和 Linux,在 Ubuntu 或 Mac 可以直接使用包管理工具安装。
我个人认为没有什么必要继续压缩了,如果你感兴趣请自行学习
Make
Make 命令一般使用在 C 语言项目的编译,当然也可以使用在 go 语言。
详细的教程推荐阮老师的博客
这里放一个简单例子:
.PHONY: build
FILENAME=CodeSheep_runcode-1.0
all: build
build:
@CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o "${FILENAME}"