プログラムのビルド/実行時に適切なライブラリを見つけることができる場所を動的リンカーにどのように伝えることができますか? [閉鎖]

プログラムのビルド/実行時に適切なライブラリを見つけることができる場所を動的リンカーにどのように伝えることができますか? [閉鎖]

プログラムをインストールして実行しようとしています。ダイエット。これを行うには、ローカルに最新バージョンのgccをインストールする必要がありました(root / superuser権限がなかったため)。次のコマンドを使用してこれを実行しました。

cd /scratch/wdavis/Tools/source/gcc-4.9.4/

./contrib/download_prerequisites

cd /scratch/wdavis/Tools/gcc/

/scratch/wdavis/Tools/source/gcc-4.9.4/configure --prefix /scratch/wdavis/Tools/local/ --disable-multilib

make bootstrap-lean

make install

すべてがうまくいっているようです。その後、DSuiteの使用を開始しました。

git clone https://github.com/millanek/Dsuite.git

cd Dsuite/

cd utils/

python3 setup.py install --user --prefix=

cd ../

g ++()の正しいバージョンを見つけることができる場所を知らせるために、Makefileを編集する必要がありました/scratch/wdavis/Tools/local/bin/g++。それから電話しましたmake。すべてがうまくいくようです。ただし、DSuiteでは、次のエラーが発生します。

Dsuite: /lib64/libstdc++.so.6: versionGLIBCXX_3.4.20 'が見つかりません(Dsuiteに必要)

2つの答えが見つかりましたここそしてここ-L/usr/local/lib64提案:「必要に応じてビルドして実行してみることができますLD_LIBRARY_PATH=/usr/local/lib64

export LD_LIBRARY_PATH=/scratch/wdavis/Tools/local/lib64/Dsuiteを実行します。しかし、make -L/scratch/wdavis/Tools/local/lib64/何も動作しませんでした。つまり、Dsuiteで再構築後も同じエラーが発生しました。

私の質問は次のとおりです

  1. 実行時に動的リンカが正しいディレクトリにライブラリを見つけるようにプログラムをどのように設定しますか?

  2. export LD_LIBRARY_PATH=/scratch/wdavis/Tools/local/lib64/実行してDsuiteを実行するように設定してからLD_LIBRARY_PATHをリセットせずに他のプログラムを実行し続けるとどうなりますか?

  3. LD_LIBRARY_PATHをリセットする方法は?

よろしくお願いします。

答え1

make -L/scratch/wdavis/Tools/local/lib64/間違った。

-Lldmakeではなく、GCCおよびリンカフラグ(例:)。

アプリケーションの言語に応じて、CFLAGSまたはCXXFLAGSエクスポートを介してそれらをエクスポートする必要があります。 LDFLAGS経由でエクスポートすることもできます。これはすべてアプリケーションの構築とリンク方法によって異なり、GCCまたはldを使用して最終バイナリ/ライブラリをコンパイルできます。

例えば

export CFLAGS="-L/scratch/wdavis/Tools/local/lib64/"
export CXXFLAGS="-L/scratch/wdavis/Tools/local/lib64/"
export LDFLAGS="-L/scratch/wdavis/Tools/local/lib64/"
./configure && make

LD_LIBRARY_PATHglibcのフラグであり、その目的は次のとおりです。実装する接続する代わりにアプリケーションを使用してください。

説明書をよくお読みください。中にすべて入っていますman gcc、、、man ldman ld.so

  1. man bash

あなたはそうですunset VAR_NAME

関連情報