golang shell 交叉编译
#!/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 字符串小写转大写
uname -s | awk '{print tolower($0)}'
shell字符串拼接
对于变量或者字符串的连接,shell提供了相当简单的做法
直接放到一起或用双引号即可
${staticTag} ${timeTag} ${branchFlag} ${commitFlag} ${goVersionFlag}
golang 编译时加入额外信息
golang中我们在编译时可以使用-ldflags
编译选项来添加一些信息,这些信息会被写入到目标文件中
交叉编译
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 所以要禁用它
golang shell 交叉编译的更多相关文章
- golang 打包,交叉编译,压缩
打包,压缩 我们的常规打包方式 $ go build Mac下我们用 ls -lh查看,可以看到我们打包出来的可执行文件会比较大,一般只写几行代码就回又3M以上的文件大小了. 我们的带压缩的打包方式 ...
- Golang 如何交叉编译
Golang 支持交叉编译,即在一个平台上生成另一个平台的可执行程序.方法如下: Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux G ...
- 一键打造vim ide 支持python golang shell等高级特性
1.vim-for-devops github: https://github.com/yxxhero/vim_for_devops 利用vim插件打造支持python.shell.golang的id ...
- golang之交叉编译设置
俺的环境,os x,目的,生成64位linux的elf文件 直接下载osx的包就可以,不需要特意去下载源码包,我的go目录是~/golang/go cd ~/golang/go/srcGOOS=lin ...
- golang 在 Mac , Linux , Windows 下交叉编译详解
一. 前言 Golang 支持交叉编译, 在一个平台上生成然后再另外一个平台去执行. 而且编译的工具[build]这个工具是Golang 内置的,不需要你去下载第三方的包啥的,贼方便. 二. 交叉编译 ...
- Golang 在 Mac、Linux、Windows 下如何交叉编译(转)
原文地址:Golang 在 Mac.Linux.Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下 ...
- 【备忘录】Golang交叉编译
Golang 支持交叉编译,在一个windows平台可以生成linux或Mac系统下的可执行文件. Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOO ...
- Golang 在 Mac、Linux、Windows 下如何交叉编译
转自 https://blog.csdn.net/panshiqu/article/details/53788067 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下 ...
- 【转】golang 交叉编译
问题 golang如何在一个平台编译另外一个平台可以执行的文件.比如在mac上编译Windows和linux可以执行的文件.那么我们的问题就设定成:如何在mac上编译64位linux的可执行文件. 解 ...
随机推荐
- Zabbix 3.4.3 使用阿里云短信服务进行报警
目录 一.阿里云短信服务 1.1.首先开通阿里云短信服务 1.2 创建签名 1.3 创建短信模板 1.4 创建发送脚本 二.Zabbix Web 配置 2.1 增加 Media types 2.2 给 ...
- OPC API 简介
————————————————版权声明:本文为CSDN博主「lgbisha」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog. ...
- DNS域名解析系统_1
DNS服务概述: DNS的模式为C/S模式 DNS(Domain Name System)域名系统,在TCP/IP网络中有非常重要的地位,能够提供域名与ip地址的解析服务. DNS是一个分布式数据库, ...
- Introduction - Welcome
摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第一章<绪论:初识机器学习>中第1课时<欢迎参加机器学习课程>的视频原文字幕.为本人在视频学习过程 ...
- shell脚本执行出现“期待整数表达式”
在执行shell时一直出现“integer expression expected”,找了很久也没发现那个地方出错.翻了笔记发现-le并不错啊,甚至还怀疑零是不是整数还特意上网搜了下 -_- . 最后 ...
- 【Qt开发】QT4 升级到 QT5 改动
QT4 升级到 QT5 改动: PC部分: [改 QTDIR 变量] 在工程根目录下找到 .user 文件 , 如 InnoTabPlugin.vcxproj.user 修改指向你的 QT5 根目录 ...
- 【计算机】DMA原理1
DMA原理:DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量中断负载.否则,CPU 需要从来源把 ...
- OpenCV.3.4.6.附加依赖项
ZC:VS2015 "项目属性 --> 链接器--> 输入--> 附加依赖项" 中 添加内容 1.E:\OpenCV_something\opencv-3.4.6 ...
- Ubuntu修改终端显示的主机名、用户名、目录不同颜色
打开终端输入:echo $PS1 输入:gedit ~/.bashrc #定位到如下代码: if [ "$color_prompt" = yes ]; then PS1='${de ...
- poj1797(dijstra变形,求最小边的最大值)
题目链接:https://vjudge.net/problem/POJ-1797 题意:n个点,m条带权边,求点1到点n的所有路径中最小边的最大值. 思路: 和poj2253一样,只不过那题n< ...