
假設我們已經在 /usr/lib64/libfreetype.so 中安裝了 freetype 函式庫,其版本為 1.4,並且我們在 /usr/local/lib/libfreetype.so 中編譯並安裝了該函式庫的另一個版本。當我們建立需要 freetype 的軟體時,建置系統 (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
如果您想連結到另一個版本,則需要指定庫的完整路徑名。