为什么“sudo make install”失败并出现“无法识别的重定位”?

为什么“sudo make install”失败并出现“无法识别的重定位”?

这是一个问答帖子,旨在供遇到相同问题的人使用。

仅当使用不在标准路径中的单独工具链(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

原因如下:

关键是configuremake步骤有效,因为PATH前面加上了工具链的位置(例如gcc

sudo不传播变量。因此,使用错误的工具链(例如sudo make install旧的)运行命令。gcc

一种解决方案是仅使用su

su
# make install

相关内容