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

第五章:MySQL编译问题处理

许多问题的解决方案都涉及到重新配置。如果您需要重新配置,请注意以下事项:

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

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

为了防止旧的目标文件或配置信息被使用,请在重新运行前执行以下命令CMake:

在Unix:

shell> make clean shell> rm CMakeCache.txt

在Windows上:

壳> devenv MySQL。sln /clean shell> del CMakeCache.txt

如果在源树之外进行构建,请在重新运行之前删除并重新创建构建目录CMake。有关在源代码树之外进行构建的说明,请参见如何用CMake构建MySQL服务器

在某些系统上,由于系统包含文件的不同,可能会出现警告。下面的列表描述了在编译MySQL时经常出现的其他问题:

  • 要定义使用哪个C和c++编译器,可以定义CCCXX环境变量。例如:

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

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

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

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

  • 如果编译失败,请检查MYSQL_MAINTAINER_MODE选择启用。此模式将导致编译器警告变为错误,因此禁用它可能会使编译继续进行。

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

    make: Fatal error in reader: Makefile, line 18:格式错误的宏赋值

    或者:

    make: file' Makefile'第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

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

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