四,Golang 交叉编译
一.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服务器上,二进制所在目录下建立对应的目录结构及文件即可。