4

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

比如说我有一个 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 时,它将在以下文件中查找导入数据,并使用它找到的第一个。

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

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

所以我将 $GOPATH/pkg/github.com/usr/pkg.a cp 到当前目录并将其重命名为 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 的经验,所以我在这里寻求一些帮助。

4

1 回答 1

8

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

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

于 2012-11-24T19:33:09.443 回答