首先,所有这些代码都可以使用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 回答
最简单的方法是使用gc发行版中的go命令,并运行
go build -compiler gccgo .
你复制pkg.a的想法不起作用,因为pkg.a不是用gccgo构建的 .