複数のバージョンのライブラリがある場合、システムでどのバージョンを使用するか

複数のバージョンのライブラリがある場合、システムでどのバージョンを使用するか

/usr/lib64/libfreetype.so に freetype ライブラリのバージョン 1.4 をインストールし、/usr/local/lib/libfreetype.so に別のバージョンのライブラリをコンパイルしてインストールしたとします。プリタイプが必要なソフトウェアをビルドするとき、ビルドシステム(make)はどのバージョンを使用するかをどのように知ることができますか?

答え1

TL;DR バージョン: 状況によって異なります。

  • オペレーティングシステム:ライブラリの検索に使用されるパスを登録するオペレーティングシステム固有の環境(LD_LIBRARY_PATH)設定ファイルまたはコマンド(例)があります。ldconfig(8)
  • ビルドシステム:あり得る環境変数LDFLAGSシステム(またはユーザー)がカスタムパスの下にncursesを持っている場合は、コマンドラインフラグまたは設定ファイルの設定などですmutt--with-curses=[dir]これはビルドシステム(またはフレーバーmake)によって異なり、autoconfファイルまたはcmakeファイルに手動で作成する必要があるかもしれません。
  • ビルド後の設定:(patchelf利用可能な場合)などのツールを使用すると、別のライブラリを選択したり、検索パスを変更したりできます。

答え2

libxxx.so通常、名前にバージョンを含む共有ライブラリファイルへのシンボリックリンク。

リンクを使用している場合は、-lxxxこのファイルを使用してください。libxxx.so

別のバージョンに接続するには、ライブラリの絶対パス名を指定する必要があります。

関連情報