godns 的交叉编译

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

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

交叉编译的问题

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

编译依赖

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

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

  1. 获取 golang:

    1
    $ sudo yum install -y golang
  2. 设置环境变量:

    1
    2
    3
    $ export GOPATH=~/gocode # 这个目录是自定义的
    $ export GOOS=linux # 编译的平台是 Linux
    $ export GOARCH=arm # 交叉编译的目标平台是 arm,同理还可以是 mips32 等
  3. 获取项目代码:

    1
    $ git clone https://github.com/hguandl/godns.git
  4. 编译:

    1
    2
    3
    $ cd godns
    $ go get
    $ go build
  5. 获得交叉编译完成的二进制文件 godns