まず第一に、これらのコードはすべて、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でウォーキングをした経験がないので、ここで助けを探します。