首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

64 位元系統編譯 PHP + MySQL 常見錯誤與解決

     編輯:PHP 相關知識

64 位元 Linux 編譯 PHP + MySQL:跳過不相容庫的解決方案

在 64 位元系統編譯 PHP 時,若連結器找到 32 位元的 MySQL 客戶端庫,會報錯:

/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient

原因

PHP 編譯過程預設搜尋 /usr/lib/mysql(32 位元庫),但系統為 64 位元,需使用 /usr/lib64/mysql 下的 64 位元庫。

快速修復

mv /usr/lib/mysql /usr/lib/mysql.32bit.bak
ln -s /usr/lib64/mysql /usr/lib/mysql
  • 將原 32 位元庫目錄備份重命名。
  • 建立符號連結指向 64 位元庫目錄。
  • 重新執行 ./configure 並編譯 PHP。

替代方案:明確指定庫路徑

./configure --with-mysql=/usr/lib64/mysql ...

或設定環境變數:

export LDFLAGS="-L/usr/lib64/mysql"
export CPPFLAGS="-I/usr/include/mysql"
./configure --with-mysql ...

驗證

ldd /usr/local/php/bin/php | grep mysql
# 應顯示 libmysqlclient.so => /usr/lib64/mysql/libmysqlclient.so

延伸:其他常見 64 位元編譯問題

  • libxml2、openssl、curl 等依賴庫同樣需確認 64 位元版本已安裝(yum install libxml2-devel.x86_64 等)。
  • PHP 5.3+ 建議使用 mysqlnd (MySQL Native Driver) 取代 libmysqlclient,編譯參數 --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd,完全避免外部庫相容性問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved