2012-05-14 2 views
8

При попытке связать с gccgo на Precise, я получаю эту ошибку связывания:gccgo на 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 

Есть сообщения об этой ошибке, но не чистые решения. Как это исправить?

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

ответ

10

Этот недавно был воспитан на golang орехи группы: compiling with gccgo from packaged binaries.

Это известная проблема в Ubuntu (Bug #966570). Чтобы обойти это, вы можете связать со статическим libgcc, указав -static-libgcc в gccgoflags. т.е.

go build -compiler gccgo -gccgoflags '-static-libgcc' 
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, но, кажется, работает в любом случае.

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

Смежные вопросы