Software-Installation

為什麼sudo make install因“無法辨識的重定位”而失敗?

  • October 21, 2016

這是一個問答文章,旨在為遇到相同問題的人準備。

此問題僅在使用不在標準路徑中的單獨工具鏈(gcc、binutils、libtool)時發生。

即,which gcc給出未列出的位置

sudo env | grep -w "PATH="

這是在 OpenSUSE 13.2 上編譯 octave-4.2 所必需的(標準 gcc 太舊了)。

在只有一個工具鏈且該工具鏈位於標準路徑中的標準系統上,sudo make install可以正常工作。

這是錯誤,在sudo make install

libtool: warning: relinking 'Magick++/lib/libGraphicsMagick++.la'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld:
Magick++/lib/.libs/Magick___lib_libGraphicsMagick___la-Image.o: unrecognized relocation (0x2a) in section `.text'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
libtool: error: error: relink 'Magick++/lib/libGraphicsMagick++.la' with the above command before installing it

原因如下:

關鍵是configureandmake步驟有效,因為PATH前面帶有工具鏈的位置(例如gcc

sudo不傳播變數。因此sudo make install使用錯誤的工具鏈(例如舊gcc的)執行命令。

一種解決方案是只使用su

su
# make install

引用自:https://unix.stackexchange.com/questions/311882