注意:由于历史的进程,本文已经废弃。请参阅本话题更新的文章

有关 godns 的介绍请在之前的文章。godns 这个程序跟 n2n 一样,特别适合在路由器这种设备上运行,所以这次将会介绍 godns 的交叉编译,以供其他平台尤其是嵌入式系统来使用。

交叉编译的问题

因为目前版本的 golang 在交叉编译时不支持 CGO,所以交叉编译出来的程序在 https 连接方面会出错。解决方法就是把要访问的网站的证书编写到程序的代码里。详细介绍请参阅这篇文章,我按照这个解决方案修改了代码,链接在这里

编译依赖

  • Golang,推荐在 Linux 平台上使用。

交叉编译步骤(以 CentOS 系统为例)

  1. 获取 golang:
1
$ sudo yum install -y golang
  1. 设置环境变量:
1
2
3
$ export GOPATH=~/gocode # 这个目录是自定义的
$ export GOOS=linux      # 编译的平台是 Linux
$ export GOARCH=arm      # 交叉编译的目标平台是 arm,同理还可以是 mips32 等
  1. 获取项目代码:
1
$ git clone https://github.com/hguandl/godns.git
  1. 编译:
1
2
3
$ cd godns
$ go get
$ go build
  1. 获得交叉编译完成的二进制文件 godns