29

g++ を正しいバージョンのライブラリにリンクさせる環境変数を設定する方法を見つけようとしています。

/usr/lib64 にいくつかの古いブースト ライブラリがあり (これらに対するリンクは失敗します)、/v/users/regel/lib に新しいライブラリがあります。したがって、リンカーは新しいライブラリに対してリンクする必要があります。

指示:

$ g++ test.cpp -lboost_system -L/v/users/regel/lib

プログラムを正しくリンクします。ただし、リンクするたびに「-L」を指定する必要がないように、これをリンカの一番の検索ディレクトリとして設定したいと考えています。

次の環境変数はうまくいかないようです:

$ LIBRARY_PATH=/v/users/regel/lib g++ test.cpp -lboost_system
/tmp/regel/cc4SmBtI.o: In function `main':
test.cpp:(.text+0x5): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status

$ LD_LIBRARY_PATH=/v/users/regel/lib:$LD_LIBRARY_PATH g++ test.cpp -lboost_system
/tmp/regel/ccUreBZy.o: In function `main':
test.cpp:(.text+0x5): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status

同様の主題に関する多数の記事や投稿を読んだにもかかわらず、私はまだ解決策を見つけていません.

4

2 に答える 2

23

GCC のマニュアルにあるようLIBRARY_PATHに、ディレクトリをライブラリ検索パスに追加するための正しい環境変数です。

コマンドに追加-vすると、それが使用する が表示され、指定したディレクトリが含まれ、としてコマンドに追加されることがわかりますが、 etc などの標準ディレクトリのに追加されることがわかります.g++LIBRARY_PATHcollect2-L-L/usr/lib

ディレクトリを最初に入れる方法がわかりません。そのLIBRARY_PATHために使用する必要があると思います-L

于 2015-03-17T13:42:47.760 に答える
0

/etc/ld.so.conf.d/ の .conf ファイルにライブラリ パスを指定してみてください。

リンカーは、リンク中に /etc/ld.so.conf.d/ 内のファイルで指定されたパスを調べます。

ファイルを作成したら、必ず「ldconfig」を実行してください。これにより、キャッシュが強制的に更新されます。

于 2014-08-04T19:27:22.603 に答える