web-dev-qa-db-ja.com

GCCデフォルトでデフォルトのリンカー検索パスの前に追加する方法は? LIBRARY_PATHが機能していません

ライブラリの正しいバージョンにリンクするために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

類似のテーマに関する多数の記事や投稿を読んでいるにもかかわらず、私はまだ解決策を見つけていません。

20
Regel

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

-vg++コマンドに追加すると、使用するLIBRARY_PATHが表示され、指定したディレクトリが含まれており、collect2コマンドは-Lですが、-L/usr/libなどの標準ディレクトリの後に追加されます。

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

17
Jonathan Wakely