go编译可执行文件
交叉编译工具gox
Golang 交叉编译跨平台的可执行程序 (Mac、Linux、Windows )
Golang支持交叉编译,也就是说你在32位平台的机器上开发,可以编译生成64位平台上的可执行程序.mac 下可以编译linux 下的执行程序 又或者windows下的执行程序
交叉编译依赖下面几个环境变量:
$GOARCH 目标平台(编译后的目标平台)的处理器架构(386、amd64、arm)
$GOOS 目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows)
// 查看支持的平台 |
| OS | ARCH | OS version |
|---|---|---|
| linux | 386 / amd64 / arm | >= Linux 2.6 |
| darwin | 386 / amd64 | OS X (Snow Leopard + Lion) |
| freebsd | 386 / amd64 | >= FreeBSD 7 |
| windows | 386 / amd64 | >= Windows 2000 |
不带前面参数的 go build 只是编译出开发环境适用的执行文件。
windows 下面的专有参数,去掉运行后的 dos 黑窗口
go build -ldflags=”-H windowsgui”
使用 go env 命令,查看系统的配置环境,可以看到GOARCH(当前系统)是amd64
执行 set GOARCH=386 配置go输出系统平台为32位,此时再用go env命令查看系统的配置环境
然后编译就是 32 位的程序了
默认是带有调试信息的,如果想获得小的 size 可以去掉调试信息
By default, go build combines symbol and debug info with binary files. However, you can remove the symbol and debug info with go build -ldflags=-w prog.go
Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go |
Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go |
Windows 下编译 Mac 和 Linux 64位可执行程序
SET CGO_ENABLED=0 |
SET CGO_ENABLED=0 |
静态编译 zmq
CGO_CPPFLAGS="-I/usr/include" \ |