2012-05-14 14 views
8

Khi cố gắng liên kết với gccgo trên chính xác, tôi nhận được lỗi liên kết này:gccgo trên 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 

Có những báo cáo lỗi này, nhưng không có giải pháp sạch. Làm thế nào để tôi sửa chữa nó?

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

Trả lời

10

này gần đây đã được đưa lên trên nhóm golang-hạt: compiling with gccgo from packaged binaries.

Đó là sự cố đã biết trong Ubuntu (Bug #966570). Để làm việc xung quanh nó, bạn có thể liên kết với libgcc tĩnh bằng cách chỉ định -static-libgcc trong gccgoflags. tức là

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

Từ những gì tôi có thể nói, đó là vì gccgo dựa trên GCC 4.7, nhưng chính xác sử dụng GCC 4.6 theo mặc định. Vì bất kỳ lý do gì, đường dẫn thư viện không chính xác hoặc gói không đầy đủ vì thiếu libgcc_s.

tôi nằm thư viện có thể với find/-name 'libgcc_s*' và thông qua con đường thư viện như vậy:

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

Lưu ý rằng đây là liên kết chống lại 4.6 của libgcc_s, nhưng dường như làm việc anyway.

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