如何导入非标准库包使用gccgo

时间:2012-11-22 08:12:10

标签: go gccgo

首先,所有这些代码都可以使用go工具成功构建(例如go build,go install)

比方说我得到了一个试图从github导入非标准库pkg的a.go:

package a

import (
    "fmt"
    "github.com/usr/pkg"
)

func init() {
    fmt.Println("Import pkg", pkg.somevar)
}

当我尝试用gccgo编译它时:

$ gccgo -c a.go
a.go:5:20: error: import file ‘github.com/usr/pkg’ not found
...

然后我读了Setting up and using gccgo,它说

  

当您使用gccgo导入包FILE时,它将查找   导入以下文件中的数据,并使用它的第一个   发现。

     

FILE.gox   FILE.o   libFILE.so   libFILE.a

     

gccgo编译器将在当前目录中查找导入文件

所以我将$ GOPATH / pkg / github.com / usr / pkg.a命名为当前目录,并将其重命名为libpkg.a。

似乎又失败了:

$ gccgo -c a.go
a.go:9:4: error: libpkg.a: malformed archive header name at 8
a.go:9:4: error: libpkg.a exists but does not contain any Go export data

是的,我使用gccgo 4.7.2

我没有使用gcc的经验,所以我在这里寻求帮助。

1 个答案:

答案 0 :(得分:7)

最简单的方法是使用gc发行版中的go命令,然后运行go build -compiler gccgo .

你复制pkg.a的想法不起作用,因为pkg.a不是用gccgo构建的。