4

まず第一に、これらのコードはすべて、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
...

そして、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

はい、gccgo4.7.2を使用しています

gccでウォーキングをした経験がないので、ここで助けを探します。

4

1 に答える 1

8

最も簡単な方法は、gcディストリビューションからgoコマンドを使用して、実行することです。go build -compiler gccgo .

pkg.aはgccgoで構築されていないため、pkg.aをコピーするという考えは機能しません。

于 2012-11-24T19:33:09.443 に答える