编译

手动部署

简单点,直奔主题,使用命令:

go build -o xxxx

将代码编译为二进制文件,-ogcc 中的作用一样,指定二进制目录和名字

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 open in new window 下载最新的 release 版本

支持 Windows 和 Linux,在 Ubuntu 或 Mac 可以直接使用包管理工具安装。

我个人认为没有什么必要继续压缩了,如果你感兴趣请自行学习

Make

Make 命令一般使用在 C 语言项目的编译,当然也可以使用在 go 语言。

详细的教程推荐阮老师的博客open in new window

这里放一个简单例子:

.PHONY: build

FILENAME=CodeSheep_runcode-1.0

all: build
build:
	@CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o "${FILENAME}"