Go打包二進制文件的實現(xiàn)
背景
眾所周知,go語言可打包成目標平臺二進制文件是其一大優(yōu)勢,如此go項目在服務(wù)器不需要配置go環(huán)境和依賴就可跑起來。
操作
需求:打包部署到centos7
筆者打包環(huán)境:mac os
方法:進入main.go
所在目錄,輸入如下命令,當前目錄便會生成main
的可執(zhí)行文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
Windows平臺打包到Linux執(zhí)行不一樣,需要輸入如下命令
set CGO_ENABLED=0 set GOOS=linux set GOARCH=amd64 go build
- CGO_ENABLED 表示不使用cgo
- GOOS 表示目標平臺系統(tǒng)(Windows,linux,darwin「mac os」等等)
- GOARCH 表示目標系統(tǒng)架構(gòu)(arm arm64 386 amd64 等等)
打包完成后,將二進制文件放到服務(wù)器系統(tǒng),賦可執(zhí)行權(quán)限:
chmod 773 main
直接運行即可:
./main
或后臺執(zhí)行:
nohup ./main 1>info.log 2>&1 &
linux 后臺運行程序
一般為了程序后臺運行,我們需要使用nohup命令.
此時需要對程序運行時所產(chǎn)生的輸出信息記錄,因此就需要使用linux的信息輸出命令
一個例子
比如要讓redis-server程序后臺運行
1.非后臺運行:
$> ./redis-server
2.后臺運行:
$> nohup ./redis-server 1>/dev/null 2>&1 &
- 其中數(shù)字1代表標準輸出,2代表錯誤信息輸出,還有未使用的標準輸入即數(shù)字0.
- 1>/dev/null 2>&1 &的意思是標準信息輸出到空設(shè)備即不做任何處理,也不做任何顯示,/dev/null也可以替換為文本文件名(如 out.log),此時標準信息就會輸出到指定文件.
- 2>&1表示錯誤信息輸出到標準輸出,即輸出同1>后面的位置,當然也可以直接指定新文件名(如 err.log).
- 最后的& 表示程序后臺運行
上面的命令還可簡寫:
nohup ./redis-server >/dev/null 2>&1 &
即去掉標準輸出數(shù)字1
后臺運行一個程序
1.先用 netstat -tln 查看端口信息
2.isof -i:端口 可以找到程序進程號PID
3.kill PID 可以關(guān)閉程序
如此便是go打包到linux平臺的完整操作,歡迎大家指證。
到此這篇關(guān)于Go打包二進制文件的實現(xiàn)的文章就介紹到這了,更多相關(guān)Go打包二進制文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言中的空值(nil)與零值(zerovalue)區(qū)別詳解
在Go語言中,空值(nil)和零值(zero value)是兩個不同的概念,它們在語義、使用場景以及實際的編程實踐中有著明顯的區(qū)別,理解這兩者的差異對于編寫清晰、健壯的Go代碼至關(guān)重要,需要的朋友可以參考下2024-06-06golang常用庫之字段參數(shù)驗證庫-validator使用詳解
這篇文章主要介紹了golang常用庫:字段參數(shù)驗證庫-validator使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借價值,需要的朋友可以參考下2020-10-10Go語言web快速開發(fā)框架Gin的HttpRouter路由的使用
in框架內(nèi)部使用了高性能的路由器庫httprouter,支持動態(tài)參數(shù)匹配和簡潔的接口,本文主要介紹了Go語言web快速開發(fā)框架Gin的HttpRouter路由的使用,感興趣的可以了解一下2025-03-03