问题
今天使用的一个库更新了,升级新的版本之后,在服务器上编译linux-x86-64版本的时候会出现错误:
/usr/bin/ld: libsdk.a(Imagexxx.cpp.o): unrecognized relocation (0x2a) in section .text
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
随后在自己的电脑测试了一下,结果可以编译。
结合在stack overflow上看到的相关信息:
https://stackoverflow.com/questions/46058050/unable-to-compile-unrecognized-relocation
很可能是ld版本不对
确定了版本信息:
pc上ld版本:
GNU ld(GNU Binutils for Ubuntu) 2.26
服务器上ld版本:
GNU ld(GNU Binutils for Ubuntu) 2.24
解决
有root权限
$ sudo apt-get update
$ sudo apt-get install binutils-2.26
export PATH="/usr/lib/binutils-2.26/bin:$PATH"
没有root权限
下载源码:
https://ftp.gnu.org/gnu/binutils/
tar -zxvf binutils-2.26.tar.gz
cd binutils-2.26
./configure --prefix=/home/xxx/binutils
make
make install
export PATH="/home/xxx/binutils/bin:$PATH"
博客讲述了在服务器上编译linux-x86-64版本库时出现错误,在自己电脑测试却可编译的问题。经排查,很可能是ld版本不对,确定pc上ld版本为2.26,服务器上为2.24。还提及了有root权限和无root权限的解决方向及源码下载地址。
1239

被折叠的 条评论
为什么被折叠?



