使用 Golang 的交叉编译
Golang 编程学习在 Linux 上测试软件时,我使用各种架构的服务器,例如 Intel、AMD、Arm 等。当我 分配了一台满足我的测试需求的 Linux 机器[1],我仍然需要执行许多步骤:
- 下载并安装必备软件
- 验证构建服务器上是否有新的测试软件包
- 获取并设置依赖软件包所需的 yum 仓库
- 下载并安装新的测试软件包(基于步骤 2)
- 获取并设置必需的 SSL 证书
- 设置测试环境,获取所需的 Git 仓库,更改配置,重新启动守护进程等
- 做其他需要做的事情
用脚本自动化
这些步骤非常常规,以至于有必要对其进行自动化并将脚本保存到中央位置(例如文件服务器),在需要时可以在此处下载脚本。为此,我编写了 100-120 行的 Bash shell 脚本,它为我完成了所有配置(包括错误检查)。这个脚本通过以下方式简化了我的工作流程:
- 配置新的 Linux 系统(支持测试的架构)
- 登录系统并从中央位置下载自动化 shell 脚本
- 运行它来配置系统
- 开始测试
学习 Go 语言
我想学习 Go 语言 有一段时间了,将我心爱的 Shell 脚本转换为 Go 程序似乎是一个很好的项目,可以帮助我入门。它的语法看起来很简单,在尝试了一些测试程序后,我开始着手提高自己的知识并熟悉 Go 标准库。
我花了一个星期的时间在笔记本电脑上编写 Go 程序。我经常在我的 x86 服务器上测试程序,清除错误并使程序健壮起来,一切都很顺利。
直到完全转换到 Go 程序前,我继续依赖自己的 shell 脚本。然后,我将二进制文件推送到中央文件服务器上,以便每次配置新服务器时,我要做的就是获取二进制文件,将可执行标志打开,然后运行二进制文件。我对早期的结果很满意:
$ wget http://file.example.com/<myuser>/bins/prepnode
$ chmod +x ./prepnode
$ ./prepnode
然后,出现了一个问题
Read more...