カスタムプレフィックスを使用してgcc 4.7.2をビルドしようとしていますブートストラップ中にgccバイナリでrpathを設定するにはどうしたらいいですか?
私はすべての前提条件を自分のプレフィックスの場所に組み込み、インストールしてgccを構築し、インストールしました。
私は現在、$PREFIX
がライブラリ検索パスにないため、共有ライブラリが見つかりませんでした。動作しますが、私はそれが動作その後、export LD_LIBRARY_PATH=$PREFIX/lib
場合
理想的ではありませんが、私は環境変数を設定しなくても動作します何かを探しています何
$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
。
私がpatchelf
を使用してRPATH
をすべてのgcc
バイナリに設定すると、それも動作します。しかし、これはすべてのelfバイナリを検索し、それらを反復してpatchelf
を呼び出すことを含んでいます。私は、だから私は、ビルドプロセス中に作成する-Wl,-rpath,$PREFIX/lib
に合格した方法がある願っています私の目的
のための理想的なことだと思う何
。
私はパスを変更する必要がないことを知っているので、これは最も堅牢なソリューションのように思えますし、次のgccバージョンをビルドするときにも使用できます。
RPATH
をハードコードするようにビルドプロセスを設定していますか?
これらのすべてが失敗:
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"
前configure
を呼び出すLDFLAGS
を設定する:私が試してみましたが、前configure
を呼び出すLDFLAGS_FOR_TARGET
を設定
を動作しません何
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
からこれを得た
を経由して行うために、直接彼にフラグを渡すことですFOR_TARGET':これはlibgcc.soとlibstdC++。soで使われるかもしれませんが、コンパイラーのバイナリでは* host *バイナリではありません。私はLDFLAGSが正しいと思っていたでしょう。 – ams