文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  處理編譯 MySQL 時的問題

2.8.8 處理編譯 MySQL 時的問題

許多問題的解決方案涉及重新配置。如果您重新配置,請注意以下事項

  • 如果 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++ 編譯器,您可以定義 CCCXX 環境變數。例如

    $> CC=gcc
    $> CXX=g++
    $> export CC CXX

    雖然可以在命令列上執行此動作 (如剛才所示),但您可能偏好在組建指令碼中定義這些值,在這種情況下,不需要 export 命令。

    若要指定您自己的 C 和 C++ 編譯器旗標,請使用 CMAKE_C_FLAGSCMAKE_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」中的系統需求。