2017-09-05 123 views
0

我無法在我的電腦中編譯任何東西。我不知道爲什麼,可能我已經安裝了一些軟件包並且弄得一團糟。我已經卸載並重新安裝了gcc和其他軟件包,但沒有好消息..仍是這個問題。無法編譯:無法識別的重定位

這是消息:

/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse- 
linux/bin/ld: /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crt1.o: unrecognized relocation (0x29) in section `.text' 

的任何想法,這是什麼意思,如何解決這個問題?

歡呼

+0

看起來目標文件與鏈接器不兼容? – AndyG

+0

我有gcc(SUSE Linux)4.8.5 和ldd(GNU libc)2.25。我花了幾個小時試圖理解它會是什麼 – gabib44

回答

0

我固定安裝GCC-32位和刪除其他各種包

2

對於其他任何人遇到這樣的問題:我想@ gabib44的問題是使用的ld一個較老版本的鏈接,有一個庫用更新的版本構建。

當重定位類型大於您的ld版本中最大的已知重定位類型時,會發生「無法識別的重定位」。 0x2aR_X86_64_REX_GOTPCRELX)目前是最具價值的搬遷類型;我想@ gabib44的ld已經足夠老了,不知道之前的搬遷類型(0x29,R_X86_64_GOTPCRELX)。

我有這個問題我自己,當我建立的binutils用一個v2.26庫(該知道搬遷0x2a),但是如果使用的binutils v2.24

解決方法是要麼合併構建機器上的圖書館構建要與舊版binutils套件鏈接的庫,或在要連接該庫的計算機上升級ld