最近程序要适配 centos6,死活编译不过。链接时候老是报错:
/usr/bin/ld: bfd version 2.20.51.0.2-5.11.el6 20091009 internal error, aborting at reloc.c line 446 in bfd_get_reloc_size。
从东搜到西,什么有用的价值都没。再结合什么internal error,盲猜是链接器ld的bug。
于是下载 binutils自己编译,因为系统比较老,下载的binutils-2.35.2.tar.gz。
没选择最新的binutils,是因为最新的binutils对bison版本有要求,又要下载 bison,太麻烦。
编译完binutils,改下系统PATH就直接完美链接了。
连接器ld报错远不止这一种,类似这种:
/usr/bin/ld: XXX : unrecognized relocation (0x2a) in section
.text
/usr/bin/ld: final link failed: error
如果说遇到乱七八糟的ld报错,但是呢,又明确不是链接lib的问题,那么多半是链接器ld的bug,直接从新编译一个万事大吉