`go build`是Go開發者常用的命令之一,它可以啟動編譯,把我們的包和相關的依賴編譯成一個可執行的文件。
用法如下:
`usage: go build [-o output] [-i] [build flags] [packages]`
最簡單的示例:`-o`指定輸出可執行文件名
~~~
go build -o app.exe
~~~
由于博客有使用模版,樣式等靜態資源,所以打包后的程序也要把這些資源一起打成zip 包再傳到目標服務器使用。
**目標目錄**
為了統一打包的目錄特意寫了一個腳本,方便打包到不同的系統環境使用,按系統目錄,版本區分。
E:\GolangProjects\mkblog\release>tree
卷 新加卷 的文件夾 PATH 列表
卷序列號為 3CB9-B637
```
E:.
├─linux
│ ├─amd64
│ └─i386
└─windows
└─amd64
```
**build.bat腳本詳情**
腳本添加到項目的根目錄下.
```
shell
@echo off
:loop
@echo off&color 0A
cls
echo,
echo 請選擇要編譯的系統環境:
echo,
echo 1. Windows_amd64
echo 2. linux_amd64
echo 3. linux_i386
echo 4. All
echo 0. quit
echo,
::清空release目錄...
rmdir /s release /Q
del app
set/p action=請選擇:
if %action% == 1 goto build_Windows_amd64
if %action% == 2 goto build_linux_amd64
if %action% == 3 goto build_linux_i386
if %action% == 4 goto all
if %action% == 0 goto end
cls & goto :loop
:build_Windows_amd64
echo 編譯Windows版本64位
SET CGO_ENABLED=0
SET GOOS=windows
SET GOARCH=amd64
go build -v -a -o release/windows/amd64/app.exe
echo 添加資源到工作目錄并打包
copy release\windows\amd64\app.exe .
echo 打成zip包
7z.exe a app_Windows_amd64.zip conf/ docs/ static/ templates/ app.exe
timeout /t 2 /nobreak
del app.exe
goto end
:build_linux_amd64
echo 編譯Linux版本64位
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -v -a -o release/linux/amd64/app
echo 添加資源到工作目錄并打包
copy release\linux\amd64\app .
echo 打成zip包
7z.exe a app_linux_amd64.zip conf/ docs/ static/ templates/ app
timeout /t 2 /nobreak
del app
goto end
:build_linux_i386
echo 編譯Linux版本32位
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=386
go build -v -a -o release/linux/i386/app
echo 添加資源到工作目錄并打包
copy release\linux\i386\app .
echo 打成zip包
7z.exe a app_linux_i386.zip conf/ docs/ static/ templates/ app
timeout /t 2 /nobreak
del app
goto end
:all
echo 準備編譯所有版本,請耐心等待...
timeout /t 3 /nobreak
::刪除之前的zip包
del *.zip
echo,
echo 編譯Windows版本64位
SET CGO_ENABLED=0
SET GOOS=windows
SET GOARCH=amd64
go build -v -a -o release/windows/amd64/app.exe
echo 添加資源到工作目錄并打包
copy release\windows\amd64\app.exe .
echo 打成zip包
7z.exe a app_Windows_amd64.zip conf/ docs/ static/ templates/ app.exe
timeout /t 2 /nobreak
del app.exe
echo ===============我是分隔符=====================
echo 編譯Linux版本64位
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -v -a -o release/linux/amd64/app
echo 添加資源到工作目錄并打包
copy release\linux\amd64\app .
echo 打成zip包
7z.exe a app_linux_amd64.zip conf/ docs/ static/ templates/ app
timeout /t 2 /nobreak
del app
echo ===============我是分隔符=====================
echo 編譯Linux版本32位
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=386
go build -v -a -o release/linux/i386/app
echo 添加資源到工作目錄并打包
copy release\linux\i386\app .
echo 打成zip包
7z.exe a app_linux_i386.zip conf/ docs/ static/ templates/ app
timeout /t 2 /nobreak
del app
:end
@exit
```
**說明**
* 通過set命令選擇執行要打包的系統版本;
* 根據選擇配置環境變量,再執行build 命令,可執行文件會保存出到指定的目錄下。
* 使用copy命令把`目標目錄`打包好的執行文件復制到當前腳本下,并執行打包命令。
* 此處使用了7z.exe來打包,一般系統可能都沒有安裝,需要手動安裝,安裝完后最好把7z.exe和7z.dll復制到c:\\windows\\system32目錄下或者自己配置環境變量,不然就要在啟動命令時使用絕對路徑了。
* 由于Windows下無法配置Linux環境的可執行權限,所以Linux下的可以執行文件`app`需要加上執行腳本的權限
- go環境搭建
- 解決go get網絡慢的問題
- beego的安裝
- bee的安裝
- 編輯器
- go module
- 配置文件詳解
- 配置文件其他說明
- 路由方法
- 路由
- 數據校驗
- 校驗函數
- 頁面跳轉
- 獲取前端數據
- json文件的獲取
- xsrf的用法
- xsrf的防護
- srfs和json的搭配
- flash的用法
- 過濾器
- url反轉
- 各類數據的處理
- 模板函數
- 內置模板函數
- 自定義模板函數
- 模板
- 模板處理
- 模板渲染
- 視圖文件的處理
- 靜態文件
- 請求方式判斷
- 驗證碼
- 另一種方法
- 分頁類
- session
- 登錄判斷
- orm模塊
- 使用方法
- mysql的安裝
- 安裝orm及驅動
- 建立模型
- 自定義模型
- 增刪改查
- 高級查詢
- 常見問題匯總
- 代碼收藏
- 打包部署
- go build打包
- utils收藏
- 新goer容易犯的錯
- 字符串操作