Go打包二进制文件的实现

作者:赵栩彬 时间:2024-05-08 10:15:19 

背景

众所周知,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平台的完整操作,欢迎大家指证。

来源:https://segmentfault.com/a/1190000021975244

标签:Go,打包,二进制文件
0
投稿

猜你喜欢

  • Python技巧之四种多线程应用分享

    2021-12-04 12:11:57
  • pycharm中使用request和Pytest进行接口测试的方法

    2022-06-30 03:34:46
  • windows下python安装paramiko模块和pycrypto模块(简单三步)

    2021-11-29 01:18:40
  • MySQL之where使用详解

    2024-01-16 11:11:08
  • 如何设置mysql允许外部连接访问

    2024-01-15 05:22:14
  • 跨平台、多浏览器页面测试

    2008-06-24 11:54:00
  • windows系统中Python多版本与jupyter notebook使用虚拟环境的过程

    2022-11-28 13:24:01
  • 分享一些非常实用的Python小技巧

    2022-08-09 09:27:17
  • Golang如何编写内存高效及CPU调优的Go结构体

    2024-04-23 09:45:55
  • pandas数据清洗实现删除的项目实践

    2021-09-02 16:44:17
  • VBScript中清除数组元素Erase语句

    2008-06-27 13:05:00
  • 详解MySQL 数据库优化方法

    2010-08-12 14:50:00
  • vue中导出Excel表格的实现代码

    2024-06-05 09:14:06
  • Python 写小游戏吃金币+打乒乓+滑雪(附源码)

    2021-05-17 20:56:37
  • 一文带你了解Python闭包的基本用法

    2022-01-01 19:54:25
  • OpenCV物体跟踪树莓派视觉小车实现过程学习

    2021-09-15 21:55:48
  • Python使用Flask-SQLAlchemy连接数据库操作示例

    2024-01-27 10:34:36
  • Python实现识别手写数字 Python图片读入与处理

    2022-07-14 17:48:10
  • Python实现Keras搭建神经网络训练分类模型教程

    2023-08-06 12:33:03
  • Python基于Opencv识别两张相似图片

    2021-01-13 20:16:42
  • asp之家 网络编程 m.aspxhome.com