Почему `sudo make install` завершается ошибкой «нераспознанное перемещение»?

Почему `sudo make install` завершается ошибкой «нераспознанное перемещение»?

Это пост в формате «вопрос-ответ», предназначенный для людей, столкнувшихся с той же проблемой.

Эта проблема возникает только при использовании отдельной цепочки инструментов (gcc, binutils, libtool), которая не находится в стандартном пути.

т.е. which gccуказывает местоположение, которое не указано в списке

sudo env | grep -w "PATH="

Это было необходимо для компиляции octave-4.2 на OpenSUSE 13.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

Связанный контент