Windows下编译Golang程序

@Deprecated

在Windows下编译Golang程序

建议维持如下目录结构

1
2
3
foo -->src
-->bin
-->pkg

编译过程一般来说分成如下几步

  1. 前从 git/svn 服务器抓取最新的版本

  2. 清理现场

  3. 获得时间戳,以便在后续编译过程中带入作为版本号的后缀

  4. 编译,携带若干参数(资源文件、不含调试信息、版本号,目标文件名称)

  5. 复制到特定文件夹

  6. 连同配置文件一起压缩,压缩文件带有上述时间戳

  7. 导出源代码,并压缩,压缩文件带有上述时间戳

  8. 清理现场

上述步骤连续做下来,没有一个工程师可以可以连续无差错做两遍。 这样的场景适合创建一个批处理文件,如果在Linux下的话就是Shell脚本文件。

下面是一个批处理文件的示例,请参阅。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

@echo off
echo 编译打包命令如下
echo ==========================================
set /a t1=(1%time:~0,2%-100)*1
if %t1% LSS 10 set t1=0%t1%
set ymd_hm=%date:~0,4%%date:~5,2%%date:~8,2%%t1%%time:~3,2%%time:~6,2%
set "Version=v2.2.%ymd_hm%"
echo 版本号: %Version%
@echo on
go clean
go build -o YOUR_PROGRAMNAME.exe -ldflags "-s -w -X main._VERSION_ '%Version%'"
set PATH=%PATH%;C:\Program Files\WinRAR;
copy YOUR_PROGRAMNAME.exe "YOUR_PROGRAMNAME_v%ymd_hm%.exe"
rar a "YOUR_PROGRAMNAME_v%ymd_hm%.ra_" "YOUR_PROGRAMNAME_v%ymd_hm%.exe"
@echo off
echo ==========================================
@echo on

如果要支持上述代码中的,在编译命令中引入版本号,那么需要在源代码文件, 即包含 main 方法的 go 文件中包含如下变量定义。

1
2
3

//如下变量供编译器使用,不适用于golint的修改建议
var _VERSION_ = "unknown"

BTW

  1. golint 认为上述变量命名不符合规范,请忽略之

  2. 关于 Windows下批处理文件的更多知识,请 google

拆掉思维里的墙

跃迁每日打卡一

金融街笔记20180613 当年朋友送给我古典老师的书,《拆掉思维里的墙》。书里讲了一个故事,古典很早就在北京买了一套两居室,单身的古典把另外一个房间借给北漂的老乡或同学暂住(长住)。结果这些暂住免除房租压力的老乡或同学全部灰溜溜地回去了。反而那些没有房间借住承受房租压力的人成功了。

这个故事留给我的印象深刻。

拼多多老板黄铮的故事

拼多多老板黄峥老家住在杭州郊区,家里条件谈不上富裕,当然也谈不上贫穷,也就一般人家吧,据他说自己上高中的时候还帮家里挑过大粪。

1998年,黄峥从杭州外国语学校毕业,被保送至浙江大学竺可桢学院,主修计算机专业。黄也是个高智商技术高手。2002年的黄峥,即将从浙大毕业,赴美留学。丁磊的网易遇到了一个技术问题,丁磊搞不定,上网搜索到了黄峥的一篇文章,于是邀请黄峥前来帮忙解决。丁磊很欣赏黄峥的技术,丁磊和段永平也有很好的私交,便将黄峥介绍给了段永平。

2004年黄铮从威斯康星大学麦迪逊分校硕士毕业,他咨询段永平择业的问题,段指点他选择了当时未上市的谷歌工作,而非如日中天的微软。段对他说:Google看起来是一家挺牛的公司,值得去看看。对你想要未来创业也是有好处的。去的话至少呆三年,因为一两年是没法真正进入重要的岗位真正了解这个公司的。黄峥2004年加入谷歌,2007年从谷歌离职。三年时间,黄峥已经因为跟随谷歌上市而拥有百万美元,这是第一桶金。

为此,黄峥曾和媒体说:老段(段永平)对我的影响非常大,陈明永(Oppo 创始人)是大徒弟,沈炜(Vivo创始人)是二徒弟,金志江(步步高CEO)是三徒弟,我算是四徒弟。

2006年,段永平以62万美元的价格拍下了与巴菲特吃午餐的机会,他是第一个中国人,当时他还带了一个人,正是黄峥,那时候的黄峥只有26岁。