Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Dealing with Problems Compiling 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_FLAGSCMake选项。见编译器标志

    要知道需要指定哪些标志,使用mysql_config,带有--cflags--cxxflags选项。

  • 要查看编译阶段执行的命令,使用CMake配置MySQL后,运行make VERBOSE=1,而不是只make

  • 如果编译失败,请检查是否启用了MYSQL_MAINTAINER_MODE选项。该模式将编译器警告转换为错误,因此禁用它可能使编译继续进行。

  • 如果您的编译失败,出现类似以下错误,您必须升级make到GNUmake

    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程序。

    GNUmake 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)并使用它代替。

    Versions of bison older than 1.75可能报告这个错误:

    sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded

    实际上,表最大大小未超过;错误是老版本bison中的bug。

关于获取或更新工具的信息,请参阅第2.8节,“从源代码安装MySQL”