在Linux系統中,/lib
、/lib64
?和?/usr/local/lib
?這幾個目錄都用于存放庫文件(即共享庫或動態鏈接庫),但它們在用途和管理上有一些區別。
-
/lib
- 這個目錄通常包含了系統啟動和運行所必需的共享庫。這些庫通常是核心系統組件和關鍵工具所依賴的。
- 在32位系統上,
/lib
?目錄是主要的共享庫存放位置。但在64位系統上,/lib
?目錄通常包含與32位兼容性相關的庫(如果系統支持多架構)。64位系統上是64位的庫,但是兼容32位的庫。 /lib
?目錄中的庫通常由系統包管理器(如apt、yum、dnf等)管理,并且通常不建議用戶直接在這個目錄下添加或刪除庫文件。
-
/lib64
- 在64位系統上,
/lib64
?目錄用于存放專為64位架構編譯的共享庫。 - 與?
/lib
?類似,/lib64
?中的庫也是系統啟動和運行所必需的,但它們是為64位應用程序設計的。ubuntu和centos下面沒有so,一般放在lib下了。 - 同樣地,
/lib64
?目錄中的庫也由系統包管理器管理,并且不建議用戶直接修改。
- 在64位系統上,
-
/usr/local/lib
/usr/local/lib
?目錄通常用于存放用戶安裝的軟件包的共享庫。這些庫可能是從源代碼編譯安裝的,或者是通過其他非系統包管理器安裝的軟件包。- 與?
/lib
?和?/lib64
?不同,/usr/local/lib
?允許用戶直接修改和管理其中的庫文件。因此,當你從源代碼編譯安裝一個軟件包時,它的庫文件通常會被放置在這個目錄下。 - 由于?
/usr/local/lib
?是用戶管理的,所以你需要確保在更新或刪除軟件包時,也相應地更新或刪除其中的庫文件,以避免出現依賴問題。
總結:
/lib
?和?/lib64
?是系統級別的目錄,用于存放系統啟動和運行所必需的共享庫,由系統包管理器管理。/usr/local/lib
?是用戶級別的目錄,用于存放用戶安裝的軟件包的共享庫,允許用戶直接修改和管理。
在編寫應用程序或腳本時,應該盡量使用動態鏈接器(如?ld.so
)來自動查找和加載所需的庫,而不是直接指定庫的路徑。這樣可以確保應用程序在不同的系統和配置上都能夠正確運行。