如果庫有多個版本,系統會使用哪個版本

如果庫有多個版本,系統會使用哪個版本

假設我們已經在 /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

如果您想連結到另一個版本,則需要指定庫的完整路徑名。

相關內容