本文主要介紹在window環(huán)境下,使用開發(fā)工具liteide對go程序進(jìn)行交叉編譯(在一個平臺上生成另一個平臺的可執(zhí)行程序),將生成的可執(zhí)行文件部署在Linux服務(wù)器上,使我們開發(fā)的程序能直接運行在linux上。
開發(fā)環(huán)境
開發(fā)環(huán)境為 :windows
開發(fā)IDE為:liteidex
操作步驟
1.交叉編譯
Windows 下編譯 Linux 64位可執(zhí)行程序,這里需要解釋一下
GOOS:目標(biāo)平臺的操作系統(tǒng)(darwin、freebsd、linux、windows)
GOARCH:目標(biāo)平臺的體系架構(gòu)(386、amd64、arm) 交叉編譯不支持 CGO 所以要禁用它
具體命令如下:
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
首先進(jìn)入cmd命令行,cd到go環(huán)境的安裝目錄下的src目錄;然后依次執(zhí)行以下命令(執(zhí)行前先安裝tdm64-gcc-4.8.1-3):
set GOOS=linux
set GOARCH=386
set CGO_ENABLED=0
make.bat
如果要生成64位linux下的運行程序則依次輸入下列命令:
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
make.bat
如果要生成arm6下的運行程序則依次輸入下列命令:
set GOOS=linux
set GOARCH=arm
set GOARM=6
set CGO_ENABLED=0
make.bat
例如:我將go環(huán)境安裝在D:\Go下,并且我要生成64位linux下的運行程序;則我需要在cmd命令行下輸入:
C:\Users\Administrator>d:
D:>cd d:/go/src
d:\Go\src> set GOOS=linux
d:\Go\src> set GOARCH=amd64
d:\Go\src> set CGO_ENABLED=0
d:\Go\src> make.bat
2.執(zhí)行完第一步后,就可以在IDE中對GO程序進(jìn)行交叉編譯了;在IDE中將編譯的環(huán)境變量設(shè)置為cross-linux64(根據(jù)需要選擇),然后點擊查看編輯環(huán)境變量,根據(jù)go的安裝配置好設(shè)置信息,保存!
3.進(jìn)入到程序的工作路徑(即main程序所在路徑),go build main.go則會在項目根目錄生成相應(yīng)的執(zhí)行文件,執(zhí)行文件名稱為根目錄的文件名。將生成的執(zhí)行文件和程序一些其他的文件(主要是一些和程序相關(guān)的配置文件等靜態(tài)文件)上傳到linux服務(wù)器,例如使用beego框架,除了上傳執(zhí)行文件外還需要將views,static,conf等3個文件夾上傳到服務(wù)器。
特別強調(diào)一下,每次重新部署服務(wù)時,一定要記得同步更新配置文件?。。?br> 4.進(jìn)入linux系統(tǒng)下剛剛上傳文件的目錄,使用權(quán)限命令
chmod 777 程序名稱
然后使用使程序在后臺運行的命令
nohup ./程序名 &
如果要關(guān)閉程序,可以使用命令”ps” 查看后臺程序的pid,然后使用“kill 程序pid”命令,關(guān)閉程序比如程序名為test,可以用如下命令查詢
ps aux|grep test
需要在前臺運行,直接
./程序名
前臺進(jìn)程的掛起:
ctrl+Z //進(jìn)程的終止
后臺進(jìn)程的終止:
方法一: 通過jobs命令查看job號(假設(shè)為num),然后執(zhí)行kill %num
方法二: 通過ps命令查看job的進(jìn)程號(PID,假設(shè)為pid),然后執(zhí)行kill pid
前臺進(jìn)程的終止:
ctrl+c
在Linux服務(wù)器上部署服務(wù)其他一些可能用到的命令有:
& 這個用在一個命令的最后,可以把這個命令放到后臺執(zhí)行
ps 列出系統(tǒng)中正在運行的進(jìn)程
kill 發(fā)送信號給一個或多個進(jìn)程(經(jīng)常用來殺死一個進(jìn)程)
jobs 查看當(dāng)前有多少在后臺運行的命令
fg 將后臺中的命令調(diào)至前臺繼續(xù)運行
如果后臺中有多個命令,可以用 fg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
bg 將一個在后臺暫停的命令,變成繼續(xù)執(zhí)行
如果后臺中有多個命令,可以用bg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
如有不對歡迎指正,相互學(xué)習(xí),共同進(jìn)步。