2012-12-11 37 views
7

カスタムプレフィックスを使用して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 
+0

からこれを得た

make BOOT_LDFLAGS="-Wl,-rpath,/path/to/lib" 

を経由して行うために、直接彼にフラグを渡すことですFOR_TARGET':これはlibgcc.soとlibstdC++。soで使われるかもしれませんが、コンパイラーのバイナリでは* host *バイナリではありません。私はLDFLAGSが正しいと思っていたでしょう。 – ams

答えて

関連する問題