企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
`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`需要加上执行脚本的权限