四,Golang 交叉编译

2019/01/03 18:49
阅读数 14

一.golang支持在一个平台下生成另一个平台可执行程序的交叉编译功能,

1.Mac下编译Linux,windows平台的64位可执行程序:

  CGO_ENABLE=0 GOOS=linux GOARCH=amd64 go build main.go

  CGO_ENABLE=0 GOOS=windows GOARCH=amd64 go build main.go

2.Linux下编译Mac,Windows平台的64位可执行程序:

  CGO_ENABLE=0 GOOS=darwin GOARCH=amd64 go build main.go

  CGO_ENABLE=0 GOOS=windows  GOARCH=amd64 go build main.go

3,Windows下编译mac,Linux平台64可执行程序:

  set CGO_ENABLE=0

  set GOOS=darwin

  set GOARCH=amd64

  go build main.go

 

  set CGO_ENABLE=0

  set GOOS=linux

  set GOARCH=amd64

  go build main.go

GOOS:目标可执行程序运行操作系统,支持darwin,freebsd,linux,windows

GOARCH:目标可执行程序操作程序系统架构,包括386,amd64,arm

二,windows编辑linux可执行程序,打开cmd窗口,进入目标目录,执行以上四条,生成一个二进制文件main,可直接在linux系统执行。

上传至linux上,直接./maina会报错,找不到指定文件,因为需要授予可执行权限:

  chmod  777 main

再次执行./main即可。

三,linux上运行go二进制程序当作服务,例如使用golang ,gin写restful风格接口,现在要开启该服务,则需要不挂断的执行该程序,使用nohup命令:

  nohup ./main &

开启该服务,即开启一个进程,可ps aux|grep main查看进程序号,kill -9 进程序号,杀死进程。

四,若golang项目源码中需要引入配置文件等,则在linux服务器上,二进制所在目录下建立对应的目录结构及文件即可。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部