単純な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つの変数が同じ目的を果たしている意味は何ですか?他に違いはありますか?