天天看點

linux下編譯go檔案,golang編譯程式在linux上的部署

1.交叉編譯

Windows 下編譯 Linux 64位可執行程式,這裡需要解釋一下

GOOS:目标平台的作業系統(darwin、freebsd、linux、windows)

GOARCH:目标平台的體系架構(386、amd64、arm) 交叉編譯不支援 CGO 是以要禁用它

具體指令如下:

SET CGO_ENABLED=0

SET GOOS=linux

SET GOARCH=amd64

go build main.go

首先進入cmd指令行,cd到go環境的安裝目錄下的src目錄;然後依次執行以下指令(執行前先安裝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環境安裝在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.執行完第一步後,就可以在IDE中對GO程式進行交叉編譯了;在IDE中将編譯的環境變量設定為cross-linux64(根據需要選擇),然後點選檢視編輯環境變量,根據go的安裝配置好設定資訊,儲存!

3.進入到程式的工作路徑(即main程式所在路徑),go build main.go則會在項目根目錄生成相應的執行檔案,執行檔案名稱為根目錄的檔案名。将生成的執行檔案和程式一些其他的檔案(主要是一些和程式相關的配置檔案等靜态檔案)上傳到linux伺服器,例如使用beego架構,除了上傳執行檔案外還需要将views,static,conf等3個檔案夾上傳到伺服器。

特别強調一下,每次重新部署服務時,一定要記得同步更新配置檔案!!!

4.進入linux系統下剛剛上傳檔案的目錄,使用權限指令

chmod 777 程式名稱

然後使用使程式在背景運作的指令

nohup ./程式名 &

如果要關閉程式,可以使用指令”ps” 檢視背景程式的pid,然後使用“kill 程式pid”指令,關閉程式比如程式名為test,可以用如下指令查詢

ps aux|grep test

也可以通過top -u username檢視目前使用者下所有程序,找到test的pid然後使用“kill 程式pid”指令,關閉程式比如程式名為test

需要在前台運作,直接

./程式名

前台程序的挂起:

ctrl+Z //程序的終止

背景程序的終止:

方法一: 通過jobs指令檢視job号(假設為num),然後執行kill %num

方法二: 通過ps指令檢視job的程序号(PID,假設為pid),然後執行kill pid

前台程序的終止:

ctrl+c

在Linux伺服器上部署服務其他一些可能用到的指令有:

& 這個用在一個指令的最後,可以把這個指令放到背景執行

ps 列出系統中正在運作的程序

kill 發送信号給一個或多個程序(經常用來殺死一個程序)

jobs 檢視目前有多少在背景運作的指令

fg 将背景中的指令調至前台繼續運作

如果背景中有多個指令,可以用 fg %jobnumber将選中的指令調出,%jobnumber是通過jobs指令查到的背景正在執行的指令的序号(不是pid)

bg 将一個在背景暫停的指令,變成繼續執行

如果背景中有多個指令,可以用bg %jobnumber将選中的指令調出,%jobnumber是通過jobs指令查到的背景正在執行的指令的序号(不是pid)