Dynamic-Linking
理論上,在一個 RHEL 版本中創建的 .so 文件可以在任何其他 RHEL 版本中使用嗎?
我已經完成了源包的編譯並安裝在自定義路徑中,創建了二進製文件和一些共享對像庫並且該工具正在執行。
可以在另一個 RHEL 版本中使用相同的安裝(至少,理論上可以在另一個 RHEL 版本中使用這些庫嗎?)
我所需要的至少是圖書館應該工作。
稍微解釋一下會更有幫助。
同意@siblynx的評論,glibc 提供了一系列兼容性。它這樣做的方式(在版本 6 的發布範圍內)是使用符號版本控制:當每個符號(函式或數據)被引入時,都有一個相應的版本附加到符號上,以便有一種方法可以連結到自動正確的版本。
如果行為(主要是二進制介面)發生了變化,您的應用程序將使用舊版本介面載入。往回走,版本可能不存在,應用程序無法成功載入。
在更粗略的層面上,RHEL 上的大多數共享庫也是版本化的,但 glibc 通過單個共享庫中的符號版本支持兼容性範圍。
進一步閱讀:
- ELF 符號版本控制(Ulrich Drepper)
- 具有版本化介面的 GNU C 庫
- 連結到舊 GLIBC 符號
- 如何連結到特定的 glibc 版本?