Tag: 编译

  • [翻译] Go 1.3 链接器大修

    Go team 总是能带来一些惊喜的,关于 Go 的链接器,看来在 1.3 版本中要大修了
    ————翻译分隔线————

    Go 1.3 链接器大修

    Russ Cox

    2013 年 11 月

    摘要

    在构建和运行一个标准的 Go 程序时,链接器是最慢的一部分。为了解决这个问题,我们计划将链接器拆分到两部分。其中的一部分可能会用 Go 来编写。

    背景

    链接器总是 Plan 9 工具链中最慢的部分之一,而现在它是 Go 工具链中最慢的部分了。Ken Thompson 在关于工具链的概述中进行了总结:

    (more…)

  • [翻译]Go 是如何用 go 编译自己的

    原文在此《How Go uses Go to build itself》,作者为 Dave Cheney。

    ————翻译分隔线————

    Go 是如何用 go 编译自己的

    这篇文章基于 2013 年四月中旬我为悉尼 Go 用户组做的一次关于 Go 构建过程的演讲而成。

    在邮件列表或 IRC 的频道里经常有人寻求关于 Go 编译器、运行时和内部原理的细节文档。当前,关于 Go 的内部原理的权威文档的来源就是我鼓励每个人都去阅读的源代码。虽然这样说,但是从 Go 1.0 发布以来 Go 的构建过程就已经稳定了,因此将其记录在这里或许也会有其相应的价值。

    这篇文章大致介绍了 Go 编译过程的九个步骤,从源代码开始,结束于经过充分测试的安装好的 Go 。为了简明扼要,所有路径都相对与源代码检出的根路径,$GOROOT/src。

    你应当通过阅读在 golang.org 网站上的从源代码安装 Go 来了解更多背景知识。
    (more…)

  • 网络原因引起的 Golang 编译错误

    由于众所周知的原因,强大的 GFW 会引起 Go 语言编译时在对DNS相关进行测试时失败。当然如果人品不错,没有公网连接,不受GFW的影响……还是会在网络相关的那部分包的测试中失败。导致无法正常安装 Golang。

    错误信息类似如下形式:

    ...
    test math
    test mime
    test mime/multipart
    test net
    TEST FAIL net
    make[1]: Entering directory `/home/mikespook/bin/go/src/pkg/net'
    gotest -test.short -test.timeout=120
    rm -f _test/net.a
    8g -o _gotest_.8 cgo_stub.go dial.go dnsmsg.go fd_linux.go hosts.go ip.go ipsock.go iprawsock.go lookup.go net.go parse.go pipe.go sock.go tcpsock.go udpsock.go unixsock.go  newpollserver.go fd.go file.go dnsconfig.go dnsclient.go port.go  dialgoogle_test.go dnsname_test.go file_test.go hosts_test.go ip_test.go ipraw_test.go multicast_test.go net_test.go parse_test.go pipe_test.go port_test.go server_test.go srv_test.go timeout_test.go
    rm -f _test/net.a
    gopack grc _test/net.a _gotest_.8 
    --- FAIL: net.TestLookupCNAME (0.02 seconds)
    	LookupCNAME("www.google.com.") = "www-g-com-chn.l.google.com.", <nil>, want "www.l.google.com.", nil
    FAIL
    gotest: "./8.out -test.short=true -test.timeout=120" failed: exit status 1
    make[1]: *** [testshort] Error 2
    make[1]: Leaving directory `/home/mikespook/bin/go/src/pkg/net'
    make: *** [net.testshort] 错误 1
    

    解决这个问题的办法很简单,之前在推上我也有发过。但是自己安装 Golang 的时候遇到网络异常,却经常忘记这个设置,接二连三的要动手查 Makefile 。随记录于此,方便备查。
    (more…)

  • 在 Ubuntu 9.10 Server 上安装 Nginx 0.8.34

    Nginx 在 3 月 3 日放出了 0.8.34 这个开发版。张宴也随即更新了《Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器》到第六版。不过,他写的记录是针对 CentOS、Redhat 等 rpm 包管理的服务器。由于习惯了 debian 系列的服务器,特别是用惯了 ubuntu 服务器,在这里特别做一下 Ubuntu 9.10 下的安装笔记。其他基于 deb 包管理的发行版也类似。 (more…)