解決unrecognized relocation (0x2a) in section .text
問題:
/usr/bin/ld: …/deps/zw/lib/libdmsdk.a(http.o): unrecognized relocation (0x2a) in section `.text’
/usr/bin/ld: final link failed: 錯誤的值
collect2: 錯誤:ld 返回 1
make: *** [thermometry] 錯誤 1
解決方案:
查看ld 版本 ,使用命令:ld -v
GNU ld version 2.25.1-22.base.el7
- 1
通過網上搜素可知,是ld版本過低,因此使用更高版本
GNU ld version 2.27-28.base.el7_5.1
- 1
使用高版本ld,就編譯通過了。
問題
今天使用的一個庫更新了,升級新的版本之后,在服務器上編譯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"