Go语言从入门到规范-7.2、Go编译传参传递编译时间和版本并写成交叉编译的shell脚本执行
文章目录
1. 前言
有这么个需求,我们需要添加程序的编译时间和版本,对于C语言的话直接通过宏__DATE__和__TIME__就可以获取到,但是Go目前似乎没有提供类似功能,所以在找了一番后发现了两种方式,一种就是利用C实现获取编译时间,然后通过Go调用C获取,还有一种方式就是通过ldflags传参来直接传递使用date命令获取的当前时间,目前我们采用第二种方式,这种方式稍微方便一些。
2. 实例
如下是命令:
这个是例子:
结果:
3. 和GoLand结合
我们可以将上述命令放入shell脚本中放在源码目录下,如果是安装有GoLand开发工具的话,可以通过GoLand打开,并安装shell Script插件的话,会提示是否扩展Shell Check,扩展后会对shell进行检测,检测后可以直接执行脚本,这样后续就不用重复执行编译命令了,需要修改软件版本的话直接修改该脚本即可。
4. 写交叉编译的shell脚本
如上,我们写到shell脚本中执行即可获取编译时间和版本,GoLand暂时似乎无法配置这么复杂的编译参数。此外,我们可能需要设置环境变量用来交叉编译,结果如下(win10目前/bin/sh可以执行shell脚本,而GoLand可以直接执行我们写好的shell脚本):
结果:
并且生成了我们需要的交叉编译的程序。