这是一个问答帖子,旨在供遇到相同问题的人使用。
仅当使用不在标准路径中的单独工具链(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