許多問題的解決方案涉及重新配置。如果您重新配置,請注意以下事項
如果 CMake 在先前執行後再次執行,它可能會使用先前叫用期間收集的資訊。此資訊儲存在
CMakeCache.txt
中。當 CMake 啟動時,它會尋找該檔案,如果存在,則會讀取其內容,並假設資訊仍然正確。當您重新配置時,此假設是無效的。每次執行 CMake 時,您都必須再次執行 make 以重新編譯。不過,您可能想要先移除先前組建的舊物件檔案,因為它們是使用不同的配置選項編譯的。
若要防止使用舊的物件檔案或配置資訊,請在重新執行 CMake 之前執行下列命令
在 Unix 上
$> make clean
$> rm CMakeCache.txt
在 Windows 上
$> devenv MySQL.sln /clean
$> del CMakeCache.txt
如果您在原始碼樹狀結構外部組建,請在重新執行 CMake 之前移除並重新建立您的組建目錄。如需在原始碼樹狀結構外部組建的說明,請參閱如何使用 CMake 組建 MySQL 伺服器。
在某些系統上,可能會因為系統包含檔案的差異而發生警告。以下清單說明在編譯 MySQL 時發現最常發生的其他問題
若要定義要使用的 C 和 C++ 編譯器,您可以定義
CC
和CXX
環境變數。例如$> CC=gcc $> CXX=g++ $> export CC CXX
雖然可以在命令列上執行此動作 (如剛才所示),但您可能偏好在組建指令碼中定義這些值,在這種情況下,不需要 export 命令。
若要指定您自己的 C 和 C++ 編譯器旗標,請使用
CMAKE_C_FLAGS
和CMAKE_CXX_FLAGS
CMake 選項。請參閱編譯器旗標。若要查看您可能需要指定的旗標,請使用 mysql_config 搭配
--cflags
和--cxxflags
選項。若要查看在編譯階段執行哪些命令,在使用 CMake 配置 MySQL 之後,請執行 make VERBOSE=1,而不是只執行 make。
如果編譯失敗,請檢查是否已啟用
MYSQL_MAINTAINER_MODE
選項。此模式會導致編譯器警告變成錯誤,因此停用它可能會讓編譯繼續進行。如果您的編譯失敗並出現下列任何錯誤,您必須將您的 make 版本升級至 GNU make
make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment
或
make: file `Makefile' line 18: Must be a separator (:
或
pthread.h: No such file or directory
已知 Solaris 和 FreeBSD 具有麻煩的 make 程式。
已知 GNU make 3.75 可正常運作。
sql_yacc.cc
檔案是從sql_yacc.yy
產生。通常,組建程序不需要建立sql_yacc.cc
,因為 MySQL 隨附預先產生的副本。不過,如果您確實需要重新建立它,您可能會遇到此錯誤"sql_yacc.yy", line xxx fatal: default action causes potential...
這是您的 yacc 版本不足的跡象。您可能需要安裝最新版本的 bison (GNU 版本的 yacc),並改用該版本。
舊於 1.75 版本的 bison 可能會報告此錯誤
sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
實際並未超過最大資料表大小;此錯誤是由舊版 bison 中的錯誤所造成。
如需取得或更新工具的資訊,請參閱第 2.8 節,「從原始碼安裝 MySQL」中的系統需求。