Por que o 'sudo make install' está falhando com a “realocação não reconhecida”?

0

Esta é uma postagem de pergunta / resposta, destinada a pessoas que enfrentam o mesmo problema.

Este problema só acontece quando se usa um conjunto de ferramentas separado (gcc, binutils, libtool) que não está no caminho padrão.

, por exemplo, which gcc fornece um local que não está listado por

sudo env | grep -w "PATH="

Isso foi necessário para compilar a oitava-4.2 no OpenSUSE 13.2 (o padrão do gcc era muito antigo).

Em um sistema padrão, onde há apenas um conjunto de ferramentas, e esse conjunto de ferramentas está no caminho padrão, sudo make install funciona bem.

Aqui está o erro, em 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
    
por ederag 23.09.2016 / 16:49

1 resposta

1

Aqui está o motivo:

O ponto é que as etapas configure e make funcionaram porque o PATH foi prefixado com a localização da cadeia de ferramentas (por exemplo, gcc )

Mas sudo não propaga as variáveis . Portanto, sudo make install executou comandos com o toolchain errado (o antigo gcc , por exemplo).

Uma solução é usar apenas su

su
# make install
    
por 23.09.2016 / 16:49