2012-05-14 16 views
8

Gdy próbuje połączyć z gccgo na precyzyjnych, otrzymuję ten błąd łączenia:gccgo na Precise

[email protected]:~/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 

Istnieją doniesienia o tym błędzie, ale nie ma czystych rozwiązań. Jak mogę to naprawić?

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

Odpowiedz

10

ten został niedawno wychowany na grupie golang orzechów: compiling with gccgo from packaged binaries.

Jest to znany problem w systemie Ubuntu (Bug #966570). Aby obejść ten problem, możesz połączyć się ze statyczną biblioteką libgcc, podając -static-libgcc w gccgoflags. tj

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

Z tego co mogę powiedzieć, to dlatego gccgo bazuje na GCC 4.7, ale Precyzyjne wykorzystuje GCC 4.6 domyślnie. Z jakiegoś powodu ścieżki biblioteki są niepoprawne lub pakiet jest niekompletny, ponieważ brakuje go libgcc_s.

I znajduje możliwych bibliotek find/-name 'libgcc_s*' i przeszedł ścieżkę biblioteki tak:

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

pamiętać, że jest przeciwko łączącą 4,6 na libgcc_s, ale i tak wydaje się działać.

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 

OK