
/usr/lib64/libfreetype.so にバージョン 1.4 の freetype ライブラリが既にインストールされており、このライブラリの別のバージョンがコンパイルされて /usr/local/lib/libfreetype.so にインストールされているとします。freetype を必要とするソフトウェアをビルドするときに、ビルド システム (make) はどのバージョンを使用するかをどのように認識するのでしょうか。
答え1
TL;DR バージョン: それは状況によります。
- OS:ライブラリの検索に使用するパスを登録するOS 固有の環境 (
LD_LIBRARY_PATH
) 構成ファイルまたはコマンド ( など)が存在する場合があります。ldconfig(8)
- ビルドシステム:環境変数
LDFLAGS
またはコマンドラインフラグや構成ファイル設定など。システム (またはユーザー) がカスタムパスで ncurses を持っている場合は がmutt
あります--with-curses=[dir]
。これらはビルドシステム (または のフレーバーmake
) に依存し、autoconf または cmake ファイルに手動で書き込む必要がある場合があります。 - ビルド後の設定: (使用可能な場合) などのツールを使用すると、
patchelf
異なるライブラリを選択したり、検索パスを変更したりできます。
答え2
libxxx.so
通常は、名前にバージョンが含まれる共有ライブラリ ファイルへのシンボリック リンクです。
を使用してリンクする場合は-lxxx
、このlibxxx.so
ファイルが使用されます。
別のバージョンにリンクする場合は、ライブラリのフルパス名を指定する必要があります。