Warum schlägt „sudo make install“ mit der Meldung „Nicht erkannte Umsiedlung“ fehl?

Warum schlägt „sudo make install“ mit der Meldung „Nicht erkannte Umsiedlung“ fehl?

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 gccgibt 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 installfunktioniert 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 configureund makeSchritte funktionierten, weil dem PATHder Speicherort der Toolchain vorangestellt war (z. B. gcc).

Abersudopropagiert die Variablen nicht. Daher sudo make installwurden Befehle mit der falschen Toolchain ausgeführt ( gccz. B. der alten).

Eine Lösung besteht darin, einfach zu verwendensu

su
# make install

verwandte Informationen