本文主要介紹在window環境下,使用開發工具liteide對go程序進行交叉編譯(在一個平臺上生成另一個平臺的可執行程序),將生成的可執行文件部署在Linux服務器上,使我們開發的程序能直接運行在linux上。
開發環境
開發環境為 :windows
開發IDE為:liteidex
操作步驟
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)
如有不對歡迎指正,相互學習,共同進步。
————————————————
版權聲明:本文為CSDN博主「wade3015」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wade3015/article/details/83387212