gccgo on Precise

时间:2012-05-14 06:01:45

标签: linux go ubuntu-12.04 ld gccgo

当尝试在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

3 个答案:

答案 0 :(得分:10)

这是最近在golang-nuts集团提出的:compiling with gccgo from packaged binaries

这是Ubuntu中的一个已知问题(Bug #966570)。要解决此问题,您可以通过在gccgoflags中指定-static-libgcc来链接静态libgcc。即。

go build -compiler gccgo -gccgoflags '-static-libgcc'

答案 1 :(得分: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的链接,但无论如何似乎都有效。

答案 2 :(得分: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