8

Preciseでgccgoとリンクしようとすると、次のリンクエラーが発生します。

matt@matt-1005P:~/src/gopath/src/meme$ gccgo cmd/meme/main.go -o meme
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status

このエラーの報告はありますが、クリーンな解決策はありません。どうすれば修正できますか?

gccgo(Ubuntu / Linaro 4.7.0-0ubuntu4)4.7.0

Linux matt-1005P 3.2.0-24-generic-pae#38-Ubuntu SMP Tue May 1 16:40:26 UTC 2012 i686 i686 i386 GNU / Linux

4

3 に答える 3

10

これは最近 golang-nuts グループで取り上げられました:パッケージ化されたバイナリから gccgo でコンパイルする

これは Ubuntu の既知の問題です (バグ #966570 )。これを回避するには、gccgoflags で指定することにより、静的 libgcc とリンクできます-static-libgcc。すなわち

go build -compiler gccgo -gccgoflags '-static-libgcc'
于 2012-05-15T08:54:43.670 に答える
1

私が知る限り、gccgo は GCC 4.7 をベースにしていますが、Precise はデフォルトで GCC 4.6 を使用しているためです。何らかの理由で、ライブラリ パスが正しくないか、パッケージが見つからないためにパッケージが不完全ですlibgcc_s

可能なライブラリを見つけてfind / -name 'libgcc_s*'、次のようにライブラリ パスを渡しました。

go install -compiler=gccgo -gccgoflags -L/usr/lib/gcc/i686-linux-gnu/4.6 meme/cmd/meme

これは 4.6 に対してリンクしていますがlibgcc_s、とにかく動作するように見えることに注意してください。

于 2012-05-15T09:05:47.190 に答える
0
/usr/bin/ld: cannot find -lgcc_s (cannot find lgcc_s.so)

gccgo -v (we gcc version 4.7.0 (Ubuntu/Linaro 4.7.0-1ubuntu5) )

locate libgcc_s.so.1 

/lib/i386-linux-gnu/libgcc_s.so.1

ln -sf /lib/i386-linux-gnu/libgcc_s.so.1 /usr/lib/gcc/i686-linux-gnu/4.7.0/libgcc_s.so 

わかった

于 2012-08-22T03:52:41.060 に答える