単純なC++プログラムを作成していますが、開発とテストのために、システムが提供する共有ライブラリを一時的に最新バージョンに置き換えたいと考えています。
LD_LIBRARY_PATH変数を設定しようとしましたが、リンカー(ld)が次のエラーで失敗しました。
/ usr / bin / ld:-lyaml-cppが見つかりません
ld manページによると、私はそれが機能することを期待していました。
リンカは、次の検索パスを使用して、必要な共有ライブラリを検索します。...ネイティブリンカの場合、環境変数「LD_LIBRARY_PATH」の内容...
次に、LIBRARY_PATHを設定してみましたが、うまくいきました。
GCCマニュアルによると:
LIBRARY_PATHの値は、PATHと同様に、コロンで区切られたディレクトリのリストです。ネイティブコンパイラとして設定されている場合、GCCは、GCC_EXEC_PREFIXを使用してそれらを見つけることができない場合、特別なリンカーファイルを検索するときにこのように指定されたディレクトリを試行します。GCCを使用したリンクでは、通常のライブラリで-lオプションを検索するときにもこれらのディレクトリが使用されます(ただし、-Lで指定されたディレクトリが最初になります)。
(GCC)マニュアルが示唆しているように、私はGCCとリンクしているので、LIBRARY_PATHは機能します。
だが..
- エラーメッセージが示すように、gccとリンクしているので、なぜldが呼び出されるのですか?
- 同じ目的を果たす2つの変数を持つことのポイントは何ですか?他に違いはありますか?