許多問題的解決方案都涉及重新配置。如果您重新配置,請注意以下事項
如果 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」中的系統需求。