Linux

在 Linux 環境中查找 libmysqlclient.so.X 文件的位置

  • November 1, 2011

我正在整理一個需要了解 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 文件)。

引用自:https://serverfault.com/questions/326552