首页 > 系统相关 >一个脚本打包三个平台的linux,mac,windows的golang程序

一个脚本打包三个平台的linux,mac,windows的golang程序

时间:2024-01-12 16:34:34浏览次数:35  
标签:windows golang mac VERSION BUILD linux go main OS

一个脚本打包三个平台的linux,mac,windows的golang程序:

#!/bin/bash

# 设置变量
APP_NAME="atmp"
VERSION="1.0.0"
BUILD_TIME=$(date +%Y-%m-%d_%H:%M:%S)
BUILD_DIR="bin"
PLATFORMS=("linux/amd64" "windows/amd64" "darwin/amd64")

# 创建输出目录
mkdir -p $BUILD_DIR

# 循环打包不同平台
for PLATFORM in "${PLATFORMS[@]}"
do
  # 解析平台参数
  OS=$(echo $PLATFORM | cut -d'/' -f1)
  ARCH=$(echo $PLATFORM | cut -d'/' -f2)

  # 设置输出文件名
  OUTPUT="$BUILD_DIR/$APP_NAME-$VERSION-$OS-$ARCH"

  # 打包程序
  if [ "$OS" == "windows" ]; then
    CGO_ENABLED=0 GOOS=$OS GOARCH=$ARCH go build -o $OUTPUT.exe -ldflags "-X main.version=$VERSION -X main.buildTime=$BUILD_TIME" main.go
  elif [ "$OS" == "linux" ]; then
    CGO_ENABLED=1 GOOS=$OS GOARCH=$ARCH CC=x86_64-linux-musl-gcc CXX=x86_64-linux-musl-g++ go build -o $OUTPUT -ldflags "-X main.version=$VERSION -X main.buildTime=$BUILD_TIME" main.go
  else
    go build -o $OUTPUT -ldflags "-X main.version=$VERSION -X main.buildTime=$BUILD_TIME" main.go
  fi
done

标签:windows,golang,mac,VERSION,BUILD,linux,go,main,OS
From: https://blog.51cto.com/thinklili/9219046

相关文章

  • mac下golang打包到Linux上执行报错:No such file or directory
    本地mac打包golang二进制文件到linux服务器报错:-bash:./atmp-linux:Nosuchfileordirectory很奇怪,明明可执行文件在当前目录下,为什么会找不到呢?使用列出动态库依赖的lld(listdynamicdependencies)命令查看了下,发现:lddatmp-linux发现报错:./atmp-linux:errorwhile......
  • 恒创科技:解决Windows服务器磁盘空间不足的问题
    ​服务器硬盘的大小是决定空间是否充足的主要因素。但在日常使用中,服务器和网站备份会消耗大量存储空间,如果维护不当,最终将耗尽您的容量。同样,日志文件、临时文件和数据库可以在硬盘驱动器上或回收站中无休止地建立。当您开始耗尽磁盘空间时,您会注意到服务器性能迅速下降,并且一......
  • 虚拟化(7) windows虚拟机的显卡模式
    以前,我的启动参数是kvm。略。-vgaqxl进入windows虚拟机后,感觉鼠标滑动有点迟钝。查看设备管理器里,显卡模式是vga然后,下载了virtio-win-0.1.208.iso,启动参数用--cdromiso路径。进入windows打开光驱,运行Msi文件,提示这个版本要求win8及server2012以上。所以又下载了低版本virtio-......
  • windows使用SSH隧道socks5代理自动运行尝试
    场景在《windows机器SSH隧道访问内网服务》随笔中通过XShell工具,建立SSH隧道提供Sock5代理服务,在使用过程中出现了一些问题,每次都需要手动打开代理,或者因为锁屏或网络问题会频繁断开,每天都要手动操作好多次。很是繁琐,于是想寻求一种自动运行的方式。经过多次尝试,终于使用putty软......
  • 学Windows批处理第一天:使用批处理命令生成一个文件并写入内容
    脚本功能:1、生成一个文件,文件名格式为:yyyymmddhhmmss2、文件中写入一段文本操作步骤:1、新建一个文本文档(txt格式)2、修改文件名为任意名称(我的叫create_file),修改文件类型为.bat3、使用记事本或notepad打开文件,将以下内容粘贴进去:::防止中文乱码chcp65001@echoofftitle......
  • Windows: AD active directory
     gpmc.mscgpms.mscstandsforGroupPolicyManagementConsole,ItisaMicrosoftManagementConsole(MMC)snap-inthatprovidesasingleadministrativetoolformanagingGroupPolicyacrossanorganization.TheGroupPolicyManagementConsoleisusedtoc......
  • 通过windows自带管理工具、系统命令行、快捷键等快速操作
    windows自带管理工具我们win+R输入一些命令,可以快速打开一些界面,比如:sysdm.cplwin10、win11我电脑,属性与之前win7不同了,我希望打开之前的属性打不开了通过运行或命令打开系统属性,同时按Windows+R键,在运行对话框中键入命令"sysdm.cpl",然后点击确定即可。或者也可以打开命令......
  • windows常用命令
    找端口杀进程MicrosoftWindows[版本10.0.19045.3693](c)MicrosoftCorporation。保留所有权利。C:\Users\mawencai>netstat-ano|find"8080"TCP0.0.0.0:80800.0.0.0:0LISTENING20224TCP10.92.32.217:59849183.47.......
  • Golang 监控文件夹内文件的增删改(包括子文件夹)
    你需要自己处理log部分packagemainimport("crypto/md5""fmt""go-admin/log""os""path/filepath""time""github.com/fsnotify/fsnotify")typeFileChangeCallback......
  • linux网络磁盘映射到windows
    在linux中按照以下步骤执行第一步:安装samba套件:sudoapt-getinstallsambasudoapt-getinstallsmbclient第二步:修改配置文件:sudovim/etc/samba/smb.conf第三步:添加参数设置:​ 可以在末尾添加[zxc]comment=VMwareUbuntuSharepath=/home/zxc/data......