首先,所有这些代码都可以使用go工具成功构建(例如,go build,go安装)。
比如说,我得到了一个a.go,它试图从github导入一个非标准库pkg:
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
...然后我读了建立和使用gccgo,上面写着
当您使用gccgo导入包文件时,它将在以下文件中查找导入数据,并使用它找到的第一个文件。 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一起工作的经验,所以我在这里寻求帮助。
发布于 2012-11-24 19:33:09
最简单的方法是使用gc发行版中的go命令,然后运行go build -compiler gccgo .
复制pkg.a的想法不起作用,因为pkg.a不是用gccgo构建的。
https://stackoverflow.com/questions/13508332
复制相似问题