ライブラリの正しいバージョンにリンクするためにg ++を作成する環境変数を設定する方法を見つけようとしています。
/ usr/lib64にいくつかの古いBoostライブラリ(これらに対するリンクは失敗します)と/ v/users/regel/libに新しいライブラリがあります。したがって、リンカは新しいライブラリにリンクする必要があります。
コマンド:
$ g++ test.cpp -lboost_system -L/v/users/regel/lib
プログラムを正しくリンクします。ただし、リンクするたびに '-L'を指定する必要がないように、これをリンカーのナンバー1の検索ディレクトリとして設定したいと思います。
次の環境変数は、トリックを実行していないようです。
$ 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
類似のテーマに関する多数の記事や投稿を読んでいるにもかかわらず、私はまだ解決策を見つけていません。
GCCマニュアル says のように、LIBRARY_PATH
はディレクトリをライブラリ検索パスに追加するための正しい環境変数です。
-v
をg++
コマンドに追加すると、使用するLIBRARY_PATH
が表示され、指定したディレクトリが含まれており、collect2
コマンドは-L
ですが、-L/usr/lib
などの標準ディレクトリの後に追加されます。
LIBRARY_PATH
のディレクトリを最初に作成する方法がわかりません。そのためには-L
を使用する必要があると思います。