Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 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_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 中的 bug 引起的。

有关获取或更新工具的信息,请参阅 第 2.8 节,“从源代码安装 MySQL” 中的系统要求。