首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.1 編譯報錯 do_abi_check 解決:GCC 4.5+ 不兼容修復

     編輯:MySQL 綜合教學

在較新 GCC(4.5+)下編譯 MySQL 5.1.x 常遇到 make[2]: *** [do_abi_check] Error 1,這是已知的 ABI 檢查腳本與新版 GCC 不兼容導致。最簡單的規避方案是禁用該檢查。

錯誤現象

make[2]: *** [do_abi_check] 錯誤 1
make[2]: Leaving directory `/root/mysql-5.1.44'
make[1]: *** [abi_check] 錯誤 2
make[1]: Leaving directory `/root/mysql-5.1.44'
make: *** [all-recursive] 錯誤 1

根因

MySQL 5.1 構建系統包含一個 ABI 兼容性檢查步驟(do_abi_check),其腳本使用 set -ex 在新版 GCC 下因語法/行為差異導致非零退出,阻斷編譯。

快速修復:修改 Makefile 禁用檢查

  1. 定位生成的 Makefile(通常在源碼根目錄或 sql/ 子目錄)。
  2. 搜索 do_abi_check 目標:
grep -n "do_abi_check" Makefile

典型片段:

abi_check: do_abi_check
do_abi_check:
	set -ex; \
	...檢查命令...
  1. 註釋掉 set -ex; \ 及其後續命令行,或直接將整個 do_abi_check 目標改為空操作:
do_abi_check:
	@echo "ABI check skipped"
  1. 重新執行 make。

替代方案:升級 MySQL 版本

MySQL 5.1 已停止維護(EOL 2013),強烈建議遷移至 5.7/8.0,原生支持現代 GCC,且獲得安全補丁與性能提升。若必須維護舊系統,上述修補可暫時解燃眉之急。

驗證

make && make install
# 確認無 do_abi_check 相關報錯即可

註:修改的是構建目錄下的 Makefile,非源碼原始 Makefile.am/in,重新 configure 會覆蓋,需在 configure 後、make 前操作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved