GO项目编译上线

一、windows服务器先本地编译

go build main.go

编译后会在同级目录生成可执行文件

./main.exe

二、linux服务器

2.1 服务器上去编译
安装go,配置GOPATH

第一步,把服务器上配置成本地一样的环境

第二部,包括项目里面所依赖的包

第三步,项目源码拷贝到与服务器,服务器上编译

go build main.go

编译后会在同级目录生成可执行文件

./main

执行。

如果想让项目在后台执行:执行 

nohup ./main &

这样就可以程序在后台运行了。

注意:发现如果按照官方给的安装方法只指定GOROOT的路径,于是自己新建一个目录gopath 作为GOPATH 的目录,并且设置环境变量(exportGOPATH=/newhome/go/gopath)。

在gopath下新建3个文件夹(模仿windows GOPATH的方式,也是go语言的工作环境目录)分别为 src、pkg、bin目录。

2.2 本地编译

第一步:cmd控制台到main.go文件目录下,执行下面的操作。

set GOARCH=amd64

set GOOS=linux

go build main.go

会生成一个没有后缀的二进制文件

main

第二步:将该文件放入linux系统某个文件夹下

rz main

第三步:赋予权限

chmod 777 main

最后执行 

./main

如果想让项目在后台执行:执行 

nohup ./main & 

这样就可以程序在后台运行了。

 

Mac 下编译 Linux 和 Windows 64位可执行程序

1 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
2 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Linux 下编译 Mac 和 Windows 64位可执行程序

1 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
2 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows 下编译 Mac 和 Linux 64位可执行程序

复制代码
1 SET CGO_ENABLED=0
2 SET GOOS=darwin
3 SET GOARCH=amd64
4 go build main.go
5 
6 SET CGO_ENABLED=0
7 SET GOOS=linux
8 SET GOARCH=amd64
9 go build main.go
复制代码

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)
交叉编译不支持 CGO 所以要禁用它

上面的命令编译 64 位可执行程序,你当然应该也会使用 386 编译 32 位可执行程序
很多博客都提到要先增加对其它平台的支持,但是我跳过那一步,上面所列的命令也都能成功,且得到我想要的结果,可见那一步应该是非必须的,或是我所使用的 Go 版本已默认支持所有平台。

结束!

posted @ 2020-07-15 13:59  aaronthon  阅读(2897)  评论(0编辑  收藏  举报