golang一键打包macos, linux, windows 应用程序 shell脚本

golang一键打包各个平台可执行应用程序shell脚本, 可自定义输出文件名,自动一键打包3大平台可执行应用程序。废话不多说,直接上代码:

bash 复制代码
#!/bin/sh
##################################
# 生成各个平台下的可执行程序 golang一键打包 macos, linux, windows 应用程序
# 使用方法: sh build.sh [-n appname]
# 也可忽略 -n 参数 sh build.sh  默认名称为 myapp
#
# 如: sh build.sh -n helloworld 将自动在target目录下生成以下3个可执行文件
# helloworld-darwin-amd64.bin  helloworld-linux-amd64.bin helloworld-windows-amd64.exe
#
# Author: tekintian@gmail.com
##################################

# 获取用户输入参数
while getopts ":n:" opt; do
    case $opt in
    n)
        APPNAME=$OPTARG
        ;;
    ?)
        echo "Unknown parameter"
        exit 1
        ;;
    esac
done

# -n yourappname  default app name is  myapp
APPNAME=${APPNAME:-"myapp"}
# 通用变量
export CGO_ENABLED=0 # 关闭CGO
export GOARCH=amd64  #CPU架构
# 设置darwin
export GOOS=darwin
go build -ldflags "-s -w" -o target/${APPNAME}-darwin-amd64.bin
echo "Macos可执行程序 ${APPNAME}-darwin-amd64.bin 打包成功!"
# 设置linux
export GOOS=linux
go build -ldflags "-s -w" -o target/${APPNAME}-linux-amd64.bin
echo "linux可执行程序 ${APPNAME}-linux-amd64.bin 打包成功!"
# 设置windows
export GOOS=windows
go build -ldflags "-s -w" -o target/${APPNAME}-windows-amd64.exe
echo "Windows可执行程序 ${APPNAME}-windows-amd64.exe 打包成功!"

保存以上代码到你的项目跟目录,如 build.sh 然后执行

bash 复制代码
sh build.sh -n helloworld 

在target目录下就会生成以下3个可执行文件

helloworld-darwin-amd64.bin

helloworld-linux-amd64.bin

helloworld-windows-amd64.exe

注意,如果你直接使用 go env 的方式先设置环境变量后再打包,必须要记着打包完成后要设置回你当前的环境变量,否则你的代码将无法运行, 如:

bash 复制代码
# mac平台编译linux
go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
go build

#切换回mac 
go env -w CGO_ENABLED=1 GOOS=darwin GOARCH=amd64

本文介绍的工具 build.sh 不会有这个烦恼, 不用切换环境,不会影响你当前的golang运行环境!!!

相关推荐
圣殿骑士-Khtangc2 分钟前
Go-Map面试核心考点从哈希冲突到并发安全的完整解析
面试·golang·哈希算法
worxfr3 分钟前
Go 并发控制:从 Channel 方向约束到实战模式
开发语言·后端·golang
二宝哥28 分钟前
CentOS 7.9 离线安装 Nginx 并配置openssl1.1.1
linux·nginx·centos
程序员老陆40 分钟前
说一说FFmpeg6在Linux平台的编译
linux·运维·服务器·ffmpeg
xcLeigh1 小时前
Go入门:短变量声明的陷阱与最佳实践
java·redis·golang·教程·变量
coding4u1 小时前
Mac 外接显示器完全指南:从插上线到调好每个参数
macos·计算机外设·文件管理·显示器·策略模式·quick look扩展
JavaPub-rodert1 小时前
我又把自己的 Go 后台管理系统升级了一遍:文件管理、2GB 上传、私有文件预览、Docker 镜像全安排上了
开发语言·docker·golang·shiyuadmin
zhyf1191 小时前
(Mac)Homebrew部署Obsidian+Claudian+Excalidraw
macos
chuan.bai1 小时前
Java RAG 实战(第 3 篇):从交互式聊天到多轮上下文
java·人工智能·macos·ai
IT摆渡者1 小时前
VM EXSI7.0存储硬盘故障处理
大数据·linux·github