私は自分のプログラムをclangで構築しており、そのプログラムは外部ライブラリを使用しています。彼らが提供するバイナリ (/usr/lib/libary.so) を使用してしばらく開発してきましたが、より新しいバージョンに移行したいと考えています。
ソース コードをダウンロードしてビルドすると、インクルード ファイルと新しいライブラリが作成されます (~/library/build ディレクトリ内)。
私のコードをコンパイルするとき、私は使用します
clang++ main.cpp -I ~/library/include -L ~/library/build/lib -llibrary
これには最新のヘッダーが含まれ、正しいライブラリが検索されます (-L フラグがないと、「NewlyIntroducedFunction への未定義の参照」というエラーが表示されるため、正しいライブラリが検索されることがわかっています)。
ただし、a.out を実行しようとすると、次のエラーが表示されます。
./a.out: symbol lookup error: ./a.out: undefined symbol: NewlyIntroducedFunction
ldd on ./a.out を実行すると、次の行が表示されます。
library.so => /usr/lib/library.so
したがって、コンパイル時には正しいライブラリが使用されていますが、実行時にはそうではないと思います。~/library/build を PATH の先頭に追加しましたが、うまくいきませんでした。
見つかった正しいバージョンの library.so を取得するにはどうすればよいですか?