`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容易犯的错
- 字符串操作