0

ホームディレクトリにgcc-4.6.4をビルドしてインストールしました(ルート権限がありません)。いくつかのオブジェクト ファイルを g++ で実行可能ファイルにリンクすると、「間違った」libstdc++.so.6 がリンクされます。

インストールディレクトリにある新しいものではなく、システムのものを使用します。

ライブラリの排他的な検索パスを指定する方法はありますか?

私のbashrc:

PATH=$PATH:/home/testuser/selfcompiled/gcc-4.6.4/bin:/usr/local/cuda/bin
export PATH

C_INCLUDE_PATH=/home/testuser/selfcompiled/gcc-4.6.4/include 
export C_INCLUDE_PATH

CPLUS_INCLUDE_PATH=/home/testuser/selfcompiled/gcc-4.6.4/include 
export CPLUS_INCLUDE_PATH

LIBRARY_PATH=/home/testuser/selfcompiled/gcc-4.6.4/lib:/home/testuser/selfcompiled/gcc-4.6.4/lib64/lib
export LIBRARY_PATH

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64:/usr/local/cuda/cudaprof/bin:/home/testuser/selfcompiled/gcc-4.6.4/lib:/home/testuser/selfcompiled/gcc-4.6.4/lib64/lib
export LD_LIBRARY_PATH

GCC_EXEC_PREFIX=/home/testuser/selfcompiled/gcc-4.6.4/lib/gcc/
export GCC_EXEC_PREFIX

COMPILER_PATH=/home/testuser/selfcompiled/gcc-4.6.4/bin/:/home/testuser/selfcompiled/gcc-4.6.4/libexec/:/home/testuser/selfcompiled/gcc-4.6.4/lib/gcc/
export COMPILER_PATH

g++ -L.... を介してローカルの libstdc++.so.6 で dir を指定しても、/usr/... にあるものは ldd に従って実行可能ファイルにリンクされます。

どうもありがとう!

4

2 に答える 2

1

リンク時に問題が発生することはありません (または、古いライブラリ バージョンに存在しないシンボルに対してリンカー エラーが発生する場合があります)。

これは実行時のものです。これ:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64:/usr/local/cuda/cudaprof/bin:/home/testuser/selfcompiled/gcc-4.6.4/lib:/home/testuser/selfcompiled/gcc-4.6.4/lib64/lib
export LD_LIBRARY_PATH

する必要があります

LD_LIBRARY_PATH=/home/testuser/selfcompiled/gcc-4.6.4/lib:/home/testuser/selfcompiled/gcc-4.6.4/lib64/lib:$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64:/usr/local/cuda/cudaprof/bin
export LD_LIBRARY_PATH

実行可能ローダーは、古いライブラリを確認する前に、まず新しいライブラリを確認する必要があります。もちろん、強力なバイナリ互換性があるため、新しいシンボルを使用しなければ、古いライブラリで問題なく動作します。

于 2013-04-19T11:27:55.760 に答える
0

64ビットの実行可能ファイルをビルドしたと思います。このパス:

/home/testuser/self‌​compiled/gcc-4.6.4/lib64/lib

間違っているように見えますが、おそらく次のようになります。

/home/testuser/self‌​compiled/gcc-4.6.4/lib64

それを使用するには、設定するLD_LIBRARY_PATHか、より適切に使用します-Wl,-rpath=/home/testuser/self‌​compiled/gcc-4.6.4/lib64

于 2013-04-20T03:40:58.810 に答える