golang shell 交叉编译
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/usr/bin/env bash set -e uname_s=` uname -s | awk '{print tolower($0)}' ` uname_m=` uname -m` timeTag= "-X 'main.BuildTime=$(date '+%Y-%m-%d %H:%M:%S')'" branchFlag= "-X main.GitBranch=$(git name-rev --name-only HEAD)" commitFlag= "-X main.CommitId=$(git rev-parse --short HEAD)" goVersion=`go version | awk '{print $3}' ` goVersionFlag= "-X 'main.GoVersion=${goVersion}'" staticTag= "-extldflags '-static'" #关闭符号链接 ldflags= "-s -w ${staticTag} ${timeTag} ${branchFlag} ${commitFlag} ${goVersionFlag} " CGO_ENABLED=0 GOOS=${uname_s} GOARCH=amd64 go build -ldflags "${ldflags}" -o app main.go |
shell 字符串小写转大写
1 | uname -s | awk '{print tolower($0)}' |
shell字符串拼接
对于变量或者字符串的连接,shell提供了相当简单的做法
直接放到一起或用双引号即可
1 | ${staticTag} ${timeTag} ${branchFlag} ${commitFlag} ${goVersionFlag} |
golang 编译时加入额外信息
golang中我们在编译时可以使用-ldflags
编译选项来添加一些信息,这些信息会被写入到目标文件中
交叉编译
1 2 | CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go |
GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)
交叉编译不支持 CGO 所以要禁用它
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现