Go打包二進(jìn)制文件的實(shí)現(xiàn)
背景
眾所周知,go語言可打包成目標(biāo)平臺(tái)二進(jìn)制文件是其一大優(yōu)勢,如此go項(xiàng)目在服務(wù)器不需要配置go環(huán)境和依賴就可跑起來。
操作
需求:打包部署到centos7
筆者打包環(huán)境:mac os
方法:進(jìn)入main.go所在目錄,輸入如下命令,當(dāng)前目錄便會(huì)生成main的可執(zhí)行文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

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

