`sudo make install` が「認識されない再配置」で失敗するのはなぜですか?

`sudo make install` が「認識されない再配置」で失敗するのはなぜですか?

これは、同じ問題に遭遇した人を対象とした質問/回答の投稿です。

この問題は、標準パスにない別のツールチェーン (gcc、binutils、libtool) を使用する場合にのみ発生します。

つまり、which gccリストされていない場所を示します

sudo env | grep -w "PATH="

これは、OpenSUSE 13.2 で octave-4.2 をコンパイルするために必要でした (標準の gcc は古すぎました)。

ツールチェーンが 1 つだけあり、このツールチェーンが標準パスにある標準システムでは、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とステップが機能したことです (例: )makePATHgcc

しかしsudo変数を伝播しないそのため、間違ったツールチェーン (たとえばsudo make install古いもの) を使用してコマンドを実行しました。gcc

一つの解決策は、su

su
# make install

関連情報