文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  处理编译 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 选项。请参阅 编译器标志

    要查看您可能需要指定的标志,请使用 --cflags--cxxflags 选项调用 mysql_config

  • 要查看在编译阶段执行的命令,在使用 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 版本有缺陷。您可能需要安装最新版本的 bisonyacc 的 GNU 版本)并改用它。

    低于 1.75 版本的 bison 可能会报告此错误

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

    实际上并未超过最大表大小;该错误是由旧版本 bison 中的错误引起的。

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