从源代码构建MySQL/处理MySQL编译问题

第5章MySQL编译问题处理

许多问题的解决方案都涉及到重新配置。如果你重新配置,请注意以下几点:

  • 如果CMake在它之前运行之后运行,它可以使用在以前调用期间收集的信息。此信息存储在CMakeCache.txt.当CMake开始时,它查找该文件并在假定信息仍然正确的情况下读取它的内容(如果它存在)。当你重新配置时,这个假设是无效的。

  • 每次你奔跑CMake你必须跑使再次编译。但是,您可能希望首先从以前的构建中删除旧的对象文件,因为它们是使用不同的配置选项编译的。

如果需要避免使用旧的对象文件或配置信息,请在重新运行前执行以下命令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

    要指定您自己的C和c++编译器标志,请使用CMAKE_C_FLAGS而且CMAKE_CXX_FLAGSCMake选项。看到编译器标志

    要查看可能需要指定哪些标志,请调用mysql_config——cflags而且——cxxflags选项。

  • 查看在编译阶段执行了哪些命令CMake要配置MySQL,请执行以下命令使VERBOSE = 1而不是仅仅使

  • 如果编译失败,请检查MYSQL_MAINTAINER_MODE选择启用。此模式会使编译器警告变成错误,因此禁用该模式可以使编译继续进行。

  • 如果编译失败,并出现以下错误,则必须升级版本使在GNU使

    make: reader: Makefile中的致命错误,第18行:格式错误的宏赋值

    或者:

    第18行:必须是一个分隔符(:

    或者:

    h:没有这样的文件或目录

    Solaris和FreeBSD都有问题使项目。

    GNU使3.75是已知有效的。

  • sql_yacc.cc文件由sql_yacc.yy.通常,构建过程不需要创建sql_yacc.cc因为MySQL自带预生成的副本。但是,如果你需要重新创建它,你可能会遇到这个错误:

    “sql_yacc。yy”,行xxx致命:默认动作导致潜在的…

    这是一个迹象,你的版本yacc是有缺陷的。您可能需要安装最新版本的野牛的GNU版本yacc),然后用它来代替。

    版本的野牛超过1.75可能会报告此错误:

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

    实际上没有超过最大表大小;该错误是由旧版本的bug引起的野牛

获取或更新工具的相关信息请参见系统要求第一章,从源文件安装MySQL