カスタムプレフィックスを使用して gcc 4.7.2 をビルドしようとしています$PREFIX
すべての前提条件をビルドしてプレフィックスの場所にインストールし、gcc を正常に構成、ビルド、およびインストールしました。
私が今抱えている問題は$PREFIX
、ライブラリ検索パスにないため、共有ライブラリが見つからないことです。
$PREFIX/bin $ ./g++ ~/main.cpp
$PREFIX/libexec/gcc/x86_64-suse-linux/4.7.2/cc1plus: \
error while loading shared libraries: \
libcloog-isl.so.1: \
cannot open shared object file: No such file or directory
機能するが理想的ではないもの
それがうまくいけばexport LD_LIBRARY_PATH=$PREFIX/lib
、環境変数を設定しなくてもうまくいくものを探しています。
すべてのバイナリでpatchelf
を設定すると、それも機能します。ただし、これにはすべての elf バイナリを検索し、それらを繰り返し呼び出す必要があります。RPATH
gcc
patchelf
私の目的にとって理想的だと思うもの
-Wl,-rpath,$PREFIX/lib
だから、ビルドプロセス中にmakeに合格する方法があることを願っています。
パスを変更する必要がないことはわかっているので、これが最も堅牢なソリューションのように思えます。また、次の gcc バージョンをビルドするときにも使用できます。
ビルド プロセスをハード コードに構成することはRPATH
可能ですか?
私が試したことはありますが、うまくいきません
LDFLAGS_FOR_TARGET
呼び出す前の設定configure
:
これらはすべて失敗します。
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib -R$PREFIX/lib"
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib"
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
LDFLAGS
呼び出す前の設定configure
:
export LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
いずれにせよ、これらがLDFLAGS
gccが持っていたものを上書きするのではないかと心配しているので、機能させることができたとしても、これらが実行可能なオプションであるかどうかわかりませんか?
私の構成行
完全を期すために、構成に渡す行を次に示します。
./configure \
--prefix=$PREFIX \
--build=x86_64-suse-linux \
--with-pkgversion='SIG build 12/10/2012' \
--disable-multilib \
--enable-cloog-backend=isl \
--with-mpc=$PREFIX \
--with-mpfr=$PREFIX \
--with-gmp=$PREFIX \
--with-cloog=$PREFIX \
--with-ppl=$PREFIX \
--with-gxx-include-dir=$PREFIX/include/c++/4.7.2