脚本专栏 
首页 > 脚本专栏 > 浏览文章

Go打包二进制文件的实现

(编辑:jimmy 日期: 2025/3/4 浏览:3 次 )

背景

众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。

操作

需求:打包部署到centos7
笔者打包环境:mac os
方法:进入main.go所在目录,输入如下命令,当前目录便会生成main的可执行文件

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

Go打包二进制文件的实现

Windows平台打包到Linux执行不一样,需要输入如下命令

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build
  • CGO_ENABLED 表示不使用cgo
  • GOOS 表示目标平台系统(Windows,linux,darwin「mac os」等等)
  • GOARCH 表示目标系统架构(arm arm64 386 amd64 等等)

打包完成后,将二进制文件放到服务器系统,赋可执行权限:

chmod 773 main

直接运行即可:

./main

或后台执行:

nohup ./main 1>info.log 2>&1 &

linux 后台运行程序

一般为了程序后台运行,我们需要使用nohup命令.
此时需要对程序运行时所产生的输出信息记录,因此就需要使用linux的信息输出命令

一个例子

比如要让redis-server程序后台运行
1.非后台运行:

$> ./redis-server

2.后台运行:

$> nohup ./redis-server 1>/dev/null 2>&1 &
  • 其中数字1代表标准输出,2代表错误信息输出,还有未使用的标准输入即数字0.
  • 1>/dev/null 2>&1 &的意思是标准信息输出到空设备即不做任何处理,也不做任何显示,/dev/null也可以替换为文本文件名(如 out.log),此时标准信息就会输出到指定文件.
  • 2>&1表示错误信息输出到标准输出,即输出同1>后面的位置,当然也可以直接指定新文件名(如 err.log).
  • 最后的& 表示程序后台运行

上面的命令还可简写:

nohup ./redis-server >/dev/null 2>&1 &

即去掉标准输出数字1

后台运行一个程序

1.先用 netstat -tln 查看端口信息
2.isof -i:端口 可以找到程序进程号PID
3.kill PID 可以关闭程序

如此便是go打包到linux平台的完整操作,欢迎大家指证。

上一篇:Golang在Mac、Linux、Windows下如何交叉编译的实现
下一篇:如何用golang运行第一个项目
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap