在 Linux 環境中查找 libmysqlclient.so.X 文件的位置
我正在整理一個需要了解 libmysqlclient.so 的腳本。
$$ 15|16|18 $$.so 文件。它通常位於 /usr/lib/ 、 /usr/lib64/ 或上述目錄的 mysql/ 子目錄中。 我已經嘗試了幾件事。首先,有時可以在 /etc/ld.so.conf.d/mysql* 的 mysql 文件中找到該位置,但在許多伺服器上並非如此。
另一種可能性是在上述目錄中搜尋這些文件。我會知道正在使用哪個版本的 MySQL,因此我可以搜尋正確的 .so 文件,但不幸的是,很多人似乎安裝了多個 .so 文件。例如兩者都可能存在:
- /usr/lib/libmysqlclient.so.15
- /usr/lib64/libmysqlclient.so.15
在這種情況下,我不確定正在使用哪個 .so 文件。
有沒有辦法告訴正確的 libmysqlclient.so 安裝在哪裡?
這將為您提供連結器辨識的所有 libmysql 文件。列表中越高的優先級越高,並且更有可能被連結。
/sbin/ldconfig -p | grep mysql | cut -d\> -f2
不過需要注意的是,由於大多數應用程序通過執行 gcc -lmysqlclient 進行連結,因此它們將傾向於 ldconfig 中列為 libmysqlclient.so 而不是 .so.15 或其他文件的文件。所以我個人認為第一個 libmysqlclient.so 是正確的。
使用哪個共享對像庫取決於使用者環境和執行的二進製文件。如果您
su - USER
對正在執行二進製文件的使用者,然後執行ldd MYSQLBINARY | grep mysqlclient
將確定將使用哪個 mysqlclient 庫的命令。預設情況下,在大多數 Linux 系統上,/usr/lib(用於 x86 二進製文件)和 /usr/lib64(用於 x86_64 位二進製文件)。
順便說一句,執行
locate libmysqlclient.so
以獲取系統範圍內安裝的所有共享對象的列表(儘管可能不會報告安裝在使用者路徑中的 .so 文件)。