暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

2.9.8处理编译MySQL的问题

原创 由迪 2020-10-27
917

解决许多问题的方法包括重新配置。如果要重新配置,请注意以下几点:

  • 如果CMake在先前运行之后运行,则它可能使用在其先前调用期间收集的信息。此信息存储在中 CMakeCache.txt。当 CMake的启动时,它寻找该文件而且如果它存在读取内容,对假定信息仍然是正确的。重新配置时,该假设无效。
  • 每次运行CMake时,都必须再次运行 make进行重新编译。但是,您可能要先从以前的版本中删除旧的目标文件,因为它们是使用不同的配置选项编译的。

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

在Unix上:

shell> make clean
shell> rm CMakeCache.txt
复制

在Windows上:

shell> 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之后,运行 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的最新版本 (yacc的GNU版本 )并使用它。

    低于1.75 的野牛版本可能报告此错误:

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

    实际未超出最大表大小;该错误是由较早版本的野牛中的错误引起的。

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论