
這是一個問答帖子,旨在供遇到相同問題的人使用。
只有在使用不在標準路徑中的單獨工具鏈(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
答案1
原因如下:
關鍵是configure
和make
步驟有效,因為PATH
前面加上了工具鏈的位置(例如gcc
)
但sudo
不傳播變數。因此,使用錯誤的工具鏈(例如sudo make install
舊的)來運行命令。gcc
一種解決方案是僅使用su
su
# make install