使用Cgo构建Go程序时出现错误

/usr/lib/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: /tmp/go-link-373355991/000002.o: unrecognized relocation (0x2a) in section `.text'
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

曾尝试向Google发出该问题,并在libc6(2.21)版本中用C编译器和链接器在Debian和Ubuntu上发现了一些bug(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808205),这些版本比我使用的版本(2.19)更新。

还提到了在编译C程序时遇到的问题,我在C中成功编译了示例。

我尝试在具有相同系统和库版本的其他计算机上构建Go程序,并且构建成功。

最佳答案

检查您是否未使用ccache。
即通过:echo $ PATH
如果首先出现/usr/local/ccache路径之类的信息,请注意!
ccache尝试使用缓存来优化编译时间。
如果您先使用第一个编译器构建了一个lib,然后又尝试用另一个编译器进行编译,则您将面临这种重定位的麻烦。

因此,请尝试清除ccache:ccache -C
或只是简单地编辑PATH即可,通过export PATH =/usr/bin删除专用于ccache的路径:...

A++
提拉斯

关于go - `.text'部分中的CGO错误无法识别的重定位(0x2a),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38388171/

10-12 00:21