
Dies ist ein Frage-/Antwort-Beitrag, der sich an Personen richtet, die auf dasselbe Problem stoßen.
Dieses Problem tritt nur auf, wenn eine separate Toolchain (gcc, binutils, libtool) verwendet wird, die sich nicht im Standardpfad befindet.
d. h., which gcc
gibt einen Ort an, der nicht aufgeführt ist von
sudo env | grep -w "PATH="
Dies war notwendig, um Octave-4.2 unter OpenSUSE 13.2 zu kompilieren (der Standard-GCC war zu alt).
Auf einem Standardsystem, auf dem es nur eine Toolchain gibt und diese Toolchain sich im Standardpfad befindet, sudo make install
funktioniert es einwandfrei.
Hier ist der Fehler bei 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
Antwort1
Hier ist der Grund dafür:
Der Punkt war, dass die configure
und make
Schritte funktionierten, weil dem PATH
der Speicherort der Toolchain vorangestellt war (z. B. gcc
).
Abersudo
propagiert die Variablen nicht. Daher sudo make install
wurden Befehle mit der falschen Toolchain ausgeführt ( gcc
z. B. der alten).
Eine Lösung besteht darin, einfach zu verwendensu
su
# make install