2.9.7 MySQL 源配置选项

CMake 程序对如何配置 MySQL 源分发提供了很多控制。通常,您可以使用 CMake 命令行上的选项来执行此操作。有关 CMake 支持的选项的信息,请在顶级源目录中运行以下命令之一:

cmake . -LH
ccmake .

您还可以使用某些环境变量来影响 CMake。参见第 4.9 节“环境变量”

对于布尔选项,可以将值指定为 1 或ON以启用该选项,或者将其指定为 0 或OFF以禁用该选项。

许多选项配置了编译时默认值,这些默认值可以在服务器启动时被覆盖。例如,可以在服务器启动时使用mysqld--basedir--port--socket选项来更改配置默认安装基本目录位置,TCP/IP 端口号和 Unix 套接字文件的CMAKE_INSTALL_PREFIXMYSQL_TCP_PORTMYSQL_UNIX_ADDR选项。如果适用,配置选项描述将指示相应的mysqld启动选项。

以下各节提供有关 CMake 选项的更多信息。

CMake 选项参考

下 table 显示了可用的 CMake 选项。在Default列中,PREFIXtable 示CMAKE_INSTALL_PREFIX选项的值,该选项指定安装基础目录。此值用作几个安装子目录的父位置。

table2.13 MySQL 源配置选项参考(CMake)

Formats Description Default Introduced
BUILD_CONFIG 使用与正式版本相同的构建选项
CMAKE_BUILD_TYPE 要生产的构建类型 RelWithDebInfo
CMAKE_CXX_FLAGS C 编译器的标志
CMAKE_C_FLAGS C 编译器的标志
CMAKE_INSTALL_PREFIX 安装基础目录 /usr/local/mysql
COMPILATION_COMMENT 关于编译环境的 Comment
CPACK_MONOLITHIC_INSTALL 软件包构建是否生成单个文件 OFF
DEFAULT_CHARSET 默认服务器字符集 latin1
DEFAULT_COLLATION 默认服务器排序规则 latin1_swedish_ci
DISABLE_PSI_COND 排除性能模式条件检测 OFF
DISABLE_PSI_FILE 排除性能架构文件检测 OFF
DISABLE_PSI_IDLE 排除性能模式空闲检测 OFF
DISABLE_PSI_MEMORY 排除性能架构内存检测 OFF
DISABLE_PSI_METADATA 排除性能架构元数据检测 OFF
DISABLE_PSI_MUTEX 排除性能架构互斥检测 OFF
DISABLE_PSI_PS 排除性能模式准备好的语句 OFF
DISABLE_PSI_RWLOCK 排除性能模式 rwlock 工具 OFF
DISABLE_PSI_SOCKET 排除性能架构套接字工具 OFF
DISABLE_PSI_SP 排除性能模式存储程序检测 OFF
DISABLE_PSI_STAGE 排除性能模式阶段检测 OFF
DISABLE_PSI_STATEMENT 排除性能模式语句检测 OFF
DISABLE_PSI_STATEMENT_DIGEST 排除性能模式语句摘要工具 OFF
DISABLE_PSI_TABLE 排除性能模式 table 检测 OFF
DISABLE_PSI_THREAD 排除性能架构线程检测 OFF
DISABLE_PSI_TRANSACTION 排除性能架构事务检测 OFF
DOWNLOAD_BOOST 是否下载 Boost 库 OFF
DOWNLOAD_BOOST_TIMEOUT 下载 Boost 库的超时时间(以秒为单位) 600
ENABLED_LOCAL_INFILE 是否为加载数据启用本地 OFF
ENABLED_PROFILING 是否启用查询分析代码 ON
ENABLE_DOWNLOADS 是否下载可选文件 OFF
ENABLE_DTRACE 是否包括 DTrace 支持
ENABLE_GCOV 是否包括 gcov 支持
ENABLE_GPROF 启用 gprof(仅限优化的 Linux 构建) OFF
FORCE_UNSUPPORTED_COMPILER 是否允许不支持的编译器 OFF
IGNORE_AIO_CHECK 使用-DBUILD_CONFIG = mysql_release 时,忽略 libaio 检查 OFF
INSTALL_BINDIR 用户可执行文件目录 PREFIX/bin
INSTALL_DOCDIR Documentation directory PREFIX/docs
INSTALL_DOCREADMEDIR 自述文件目录 PREFIX
INSTALL_INCLUDEDIR 头文件目录 PREFIX/include
INSTALL_INFODIR 信息文件目录 PREFIX/docs
INSTALL_LAYOUT 选择 sched 义的安装布局 STANDALONE
INSTALL_LIBDIR 库文件目录 PREFIX/lib
INSTALL_MANDIR 手册页目录 PREFIX/man
INSTALL_MYSQLKEYRINGDIR keyring_file 插件数据文件的目录 platform specific 5.7.11
INSTALL_MYSQLSHAREDIR 共享数据目录 PREFIX/share
INSTALL_MYSQLTESTDIR mysql-test directory PREFIX/mysql-test
INSTALL_PKGCONFIGDIR mysqlclient.pc pkg-config 文件的目录 INSTALL_LIBDIR/pkgconfig
INSTALL_PLUGINDIR Plugin directory PREFIX/lib/plugin
INSTALL_SBINDIR 服务器可执行目录 PREFIX/bin
INSTALL_SCRIPTDIR Scripts directory PREFIX/scripts
INSTALL_SECURE_FILE_PRIVDIR secure_file_priv 默认值 platform specific
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR secure_file_priv libmysqld 的默认值
INSTALL_SHAREDIR aclocal/mysql.m4 安装目录 PREFIX/share
INSTALL_SUPPORTFILESDIR 额外的支持文件目录 PREFIX/support-files
MAX_INDEXES 每张 table 的最大索引 64
MUTEX_TYPE InnoDB 互斥锁类型 event
MYSQLX_TCP_PORT X 插件使用的 TCP/IP 端口号 33060 5.7.17
MYSQLX_UNIX_ADDR X 插件使用的 Unix 套接字文件 /tmp/mysqlx.sock 5.7.15
MYSQL_DATADIR Data directory
MYSQL_MAINTAINER_MODE 是否启用特定于 MySQL 维护人员的开发环境 OFF
MYSQL_PROJECT_NAME Windows/OS X 项目名称 MySQL
MYSQL_TCP_PORT TCP/IP 端口号 3306
MYSQL_UNIX_ADDR Unix 套接字文件 /tmp/mysql.sock
ODBC_INCLUDES ODBC 包含目录
ODBC_LIB_DIR ODBC 库目录
OPTIMIZER_TRACE 是否支持优化器跟踪
REPRODUCIBLE_BUILD 格外小心,以独立于构建位置和时间来创建构建结果 5.7.19
SUNPRO_CXX_LIBRARY Solaris 10 上的 Client 端链接库
SYSCONFDIR 选项文件目录
SYSTEMD_PID_DIR systemd 下 PID 文件的目录 /var/run/mysqld
SYSTEMD_SERVICE_NAME systemd 下的 MySQL 服务名称 mysqld
TMPDIR tmpdir 默认值
WIN_DEBUG_NO_INLINE 是否禁用功能内联 OFF
WITHOUT_xxx_STORAGE_ENGINE 从构建中排除存储引擎 xxx
WITH_ASAN Enable AddressSanitizer OFF
WITH_ASAN_SCOPE 启用 AddressSanitizer -fsanitize-scope-use-scope 范围 Clang 标志 OFF 5.7.21
WITH_AUTHENTICATION_LDAP 如果无法构建 LDAP 认证插件,是否报告错误 OFF 5.7.19
WITH_AUTHENTICATION_PAM 构建 PAM 身份验证插件 OFF
WITH_AWS_SDK Amazon Web Services 软件开发套件的位置 5.7.19
WITH_BOOST Boost 库源代码的位置
WITH_CLIENT_PROTOCOL_TRACING 构建 Client 端协议跟踪框架 ON
WITH_CURL curl 库的位置 5.7.19
WITH_DEBUG 是否包括调试支持 OFF
WITH_DEFAULT_COMPILER_OPTIONS 是否使用默认的编译器选项 ON
WITH_DEFAULT_FEATURE_SET 是否使用默认功能集 ON
WITH_EDITLINE 使用哪个 libedit/editline 库 bundled
WITH_EMBEDDED_SERVER 是否构建嵌入式服务器 OFF
WITH_EMBEDDED_SHARED_LIBRARY 是否构建共享的嵌入式服务器库 OFF
WITH_EXTRA_CHARSETS 包括哪些额外的字符集 all
WITH_GMOCK googlemock 分发路径
WITH_INNODB_EXTRA_DEBUG 是否包括对 InnoDB 的额外调试支持。 OFF
WITH_INNODB_MEMCACHED 是否生成 memcached 共享库。 OFF
WITH_KEYRING_TEST 构建密钥环测试程序 OFF 5.7.11
WITH_LDAP 仅供内部使用 5.7.29
WITH_LIBEVENT 使用哪个 libevent 库 bundled
WITH_LIBWRAP 是否包括 libwrap(TCP 包装器)支持 OFF
WITH_LZ4 LZ4 库支持的类型 bundled 5.7.14
WITH_MECAB Compiles MeCab
WITH_MSAN Enable MemorySanitizer OFF
WITH_MSCRT_DEBUG 启用 Visual Studio CRT 内存泄漏跟踪 OFF
WITH_NDBCLUSTER 构建 NDB 存储引擎; WITH_NDBCLUSTER_STORAGE_ENGINE 的别名 ON
WITH_NDBCLUSTER_STORAGE_ENGINE 构建 NDB 存储引擎 ON
WITH_NDB_TEST 包括 NDB API 测试程序。 OFF
WITH_NUMA 设置 NUMA 内存分配策略 5.7.17
WITH_PROTOBUF 使用哪个协议缓冲区包 bundled 5.7.12
WITH_RAPID 是否构建快速开发周期插件 ON 5.7.12
WITH_SASL 仅供内部使用 5.7.29
WITH_SSL SSL 支持类型 system
WITH_SYSTEMD 启用系统支持文件的安装 OFF
WITH_TEST_TRACE_PLUGIN 构建测试协议跟踪插件 OFF
WITH_UBSAN 启用未定义的行为清理器 OFF
WITH_UNIT_TESTS 用单元测试编译 MySQL ON
WITH_UNIXODBC 启用 unixODBC 支持 OFF
WITH_VALGRIND 是否在 Valgrind 头文件中编译 OFF
WITH_ZLIB zlib 支持的类型 bundled
WITH_xxx_STORAGE_ENGINE 将存储引擎 xxx 静态编译到服务器中

General Options

此选项使用与 Oracle 相同的构建选项来配置源分发,Oracle 使用这些生成选项来为 MySQL 官方发行版生成二进制分发。

要生成的构建类型:

此选项影响 make package 操作产生多个安装软件包文件还是单个文件。如果禁用,该操作将产生多个安装包文件,如果您只想安装完整 MySQL 安装的一部分,则可能很有用。如果启用,它将生成一个用于安装所有内容的文件。

安装布局选项

CMAKE_INSTALL_PREFIX选项指示基本安装目录。名称形式为INSTALL_xxx的其他 table 示组件位置的选项是相对于前缀解释的,并且它们的值是相对路径名。它们的值不应包含前缀。

安装基础目录。

可以在服务器启动时使用--basedir选项设置此值。

在哪里安装用户程序。

在哪里安装文档。

哪里安装README个文件。

在哪里安装头文件。

在哪里安装信息文件。

选择 sched 义的安装布局:

您可以选择 sched 义的布局,但可以通过指定其他选项来修改各个组件的安装位置。例如:

cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data

INSTALL_LAYOUT值确定secure_file_privkeyring_encrypted_file_datakeyring_file_data系统变量的默认值。请参见第 5.1.7 节“服务器系统变量”第 6.4.4.11 节,“密钥环系统变量”中对这些变量的描述。

在哪里安装库文件。

在哪里安装手册页。

用作keyring_file插件数据文件位置的默认目录。默认值是特定于平台的,并取决于INSTALL_LAYOUT CMake 选项的值。请参见第 5.1.7 节“服务器系统变量”中对keyring_file_data系统变量的描述。

这个选项是在 MySQL 5.7.11 中添加的。

在哪里安装共享数据文件。

mysql-test目录的安装位置。要禁止安装此目录,请将选项显式设置为空值(-DINSTALL_MYSQLTESTDIR=)。

mysqlclient.pc文件的安装目录,以供 pkg-config 使用。除非INSTALL_LIBDIR/mysql结尾,否则默认值为INSTALL_LIBDIR/pkgconfig,在这种情况下,将首先删除该值。

插件目录的位置。

可以在服务器启动时使用--plugin_dir选项设置此值。

mysqld服务器的安装位置。

哪里安装mysql_install_db

secure_file_priv系统变量的默认值。默认值是特定于平台的,并取决于INSTALL_LAYOUT CMake 选项的值;默认值为 0.请参见第 5.1.7 节“服务器系统变量”中对secure_file_priv系统变量的描述。

要设置libmysqld嵌入式服务器的值,请使用INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR

libmysqld嵌入式服务器的secure_file_priv系统变量的默认值。

Note

从 MySQL 5.7.19 开始不推荐使用libmysqld嵌入式服务器库,并将在 MySQL 8.0 中将其删除。

哪里安装aclocal/mysql.m4

在哪里安装其他支持文件。

MySQL 数据目录的位置。

可以在服务器启动时使用--datadir选项设置此值。

ODBC 的位置包括目录,并且可以在配置连接器/ ODBC 时使用。

ODBC 库目录的位置,可在配置连接器/ ODBC 时使用。

默认的my.cnf选项文件目录。

无法在服务器启动时设置此位置,但是可以使用--defaults-file=file_name选项使用给定的选项文件启动服务器,其中* file_name *是文件的完整路径名。

当 MySQL 由 systemdManagement 时,在其中创建 PID 文件的目录的名称。默认值为/var/run/mysqld;可能会根据INSTALL_LAYOUT值隐式更改它。

除非启用了WITH_SYSTEMD,否则将忽略此选项。

MySQL 由 systemdManagement 时使用的 MySQL 服务的名称。默认值为mysqld;可能会根据INSTALL_LAYOUT值隐式更改它。

除非启用了WITH_SYSTEMD,否则将忽略此选项。

tmpdir系统变量使用的默认位置。如果未指定,则默认值为<stdio.h>中的P_tmpdir

存储引擎选项

存储引擎是作为插件构建的。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须使用INSTALL PLUGIN语句或--plugin-load选项安装到服务器中,然后才能使用)。有些插件可能不支持静态或动态构建。

InnoDBMyISAMMERGEMEMORYCSV引擎是强制性的(始终编译到服务器中),无需明确安装。

要将存储引擎静态编译到服务器中,请使用-DWITH_engine_STORAGE_ENGINE=1。一些允许的engine值是ARCHIVEBLACKHOLEEXAMPLEFEDERATEDNDBNDBCLUSTER(NDB)和PARTITION(分区支持)。例子:

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1

Note

仅当使用 NDB Cluster 源构建 NDB Cluster 时,才支持WITH_NDBCLUSTER_STORAGE_ENGINE。它不能用于在其他 MySQL 源树或发行版中启用集群支持。在 NDB 群集源分发中,默认情况下启用它。有关更多信息,请参见第 21.2.3.4 节“在 Linux 上从源代码构建 NDB 集群”第 21.2.4.2 节“在 Windows 上从源代码编译和安装 NDB 群集”

Note

如果没有 Performance Schema 支持,则无法进行编译。如果希望不使用特定类型的工具进行编译,则可以使用以下 CMake 选项来完成:

DISABLE_PSI_COND
DISABLE_PSI_FILE
DISABLE_PSI_IDLE
DISABLE_PSI_MEMORY
DISABLE_PSI_METADATA
DISABLE_PSI_MUTEX
DISABLE_PSI_PS
DISABLE_PSI_RWLOCK
DISABLE_PSI_SOCKET
DISABLE_PSI_SP
DISABLE_PSI_STAGE
DISABLE_PSI_STATEMENT
DISABLE_PSI_STATEMENT_DIGEST
DISABLE_PSI_TABLE
DISABLE_PSI_THREAD
DISABLE_PSI_TRANSACTION

例如,要在不使用互斥检测的情况下进行编译,请使用-DDISABLE_PSI_MUTEX=1选项配置 MySQL。

要从构建中排除存储引擎,请使用-DWITH_engine_STORAGE_ENGINE=0。例子:

-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0
-DWITH_PARTITION_STORAGE_ENGINE=0

也可以使用-DWITHOUT_engine_STORAGE_ENGINE=1从构建中排除存储引擎(但最好使用-DWITH_engine_STORAGE_ENGINE=0)。例子:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1

如果没有为给定的存储引擎指定-DWITH_engine_STORAGE_ENGINE-DWITHOUT_engine_STORAGE_ENGINE,则该引擎将被构建为共享模块,如果无法将其构建为共享模块,则将其排除。

Feature Options

关于编译环境的描述性 Comment。

服务器字符集。默认情况下,MySQL 使用latin1(cp1252 西欧)字符集。

可以在服务器启动时使用--character_set_server选项设置此值。

服务器排序规则。默认情况下,MySQL 使用latin1_swedish_ci。使用SHOW COLLATION语句确定每个字符集可使用哪些排序规则。

可以在服务器启动时使用--collation_server选项设置此值。

是否排除性能模式条件检测。默认值为OFF(包括)。

是否排除性能模式文件检测。默认值为OFF(包括)。

是否排除性能模式空闲检测。默认值为OFF(包括)。

是否排除性能架构内存检测。默认值为OFF(包括)。

是否排除性能模式元数据检测。默认值为OFF(包括)。

是否排除性能架构互斥检测。默认值为OFF(包括)。

是否排除性能模式 rwlock 工具。默认值为OFF(包括)。

是否排除性能架构套接字工具。默认值为OFF(包括)。

是否排除性能模式存储程序工具。默认值为OFF(包括)。

是否排除性能模式阶段检测。默认值为OFF(包括)。

是否排除性能模式语句工具。默认值为OFF(包括)。

是否排除性能模式 statement_digest 工具。默认值为OFF(包括)。

是否排除性能模式 table 工具。默认值为OFF(包括)。

排除性能模式准备好的语句实例检测。默认值为OFF(包括)。

排除性能架构线程检测。默认值为OFF(包括)。

仅在构建时不使用任何工具时才禁用线程,因为其他工具对线程有依赖性。

排除性能架构事务检测。默认值为OFF(包括)。

是否下载 Boost 库。默认值为OFF

有关使用 Boost 的其他讨论,请参见WITH_BOOST选项。

下载 Boost 库的超时时间(以秒为单位)。默认值为 600 秒。

有关使用 Boost 的其他讨论,请参见WITH_BOOST选项。

是否下载可选文件。例如,启用此选项后, CMake 将下载测试套件用于运行单元测试的 Google 测试发行版。

是否包括对 DTrace 探针的支持。有关 DTrace 的信息,请第 5.8 节“使用 DTrace 跟踪 mysqld”

不建议使用此选项,因为在 MySQL 5.7 中已弃用了对 DTrace 的支持,而在 MySQL 8.0 中已删除了对 DTrace 的支持。

是否包括 gcov 支持(仅 Linux)。

是否启用gprof(仅优化的 Linux 构建)。

此选项控制 MySQLClient 端库的内置默认LOCAL功能。因此,没有明确安排的 Client 端将根据 MySQL 构建时指定的ENABLED_LOCAL_INFILE设置禁用或启用LOCAL功能。

默认情况下,MySQL 二进制发行版中的 Client 端库在启用ENABLED_LOCAL_INFILE的情况下进行编译。如果从源代码编译 MySQL,请根据未进行显式安排的 Client 端应分别禁用还是启用LOCAL功能,将ENABLED_LOCAL_INFILE禁用或启用。

ENABLED_LOCAL_INFILE控制 Client 端LOCAL功能的默认设置。对于服务器,local_infile系统变量控制服务器端LOCAL的功能。要明确导致服务器拒绝或允许本地加载数据语句(无论在构建时或运行时如何配置 Client 端程序和库),请分别在local_infile禁用或启用的情况下启动mysqldlocal_infile也可以在运行时设置。参见第 6.1.6 节“ LOAD DATA LOCAL 的安全注意事项”

是否启用查询配置代码(针对SHOW PROFILESHOW PROFILES语句)。

默认情况下, CMake 检查受支持的编译器的最低版本:Visual Studio 2013(Windows); GCC 4.4 或 Clang 3.3(Linux); Developer Studio 12.5(Solaris 服务器); Developer Studio 12.2 或 GCC 4.4(SolarisClient 端库); Clang 3.3(macOS),Clang 3.3(FreeBSD)。要禁用此检查,请使用-DFORCE_UNSUPPORTED_COMPILER=ON

如果在 Linux 上提供了-DBUILD_CONFIG=mysql_release选项,则默认情况下必须链接libaio库。如果您没有libaio或不想安装它,可以通过指定-DIGNORE_AIO_CHECK=1来取消对它的检查。

每个 table 的最大索引数。默认值为 64.最大值为 255.小于 64 的值将被忽略,并使用默认值 64.

是否启用特定于 MySQL 维护人员的开发环境。如果启用,此选项将导致编译器警告变为错误。

InnoDB使用的互斥锁类型。选项包括:

X 插件侦听 TCP/IP 连接的端口号。默认值为 33060.

可以在服务器启动时使用mysqlx_port系统变量设置此值。

服务器在其上侦听 X 插件套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为/tmp/mysqlx.sock

可以在服务器启动时使用mysqlx_port系统变量设置此值。

对于 Windows 或 macOS,将项目名称合并到项目文件名中。

服务器在其上侦听 TCP/IP 连接的端口号。默认值为 3306.

可以在服务器启动时使用--port选项设置此值。

服务器在其上侦听套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为/tmp/mysql.sock

可以在服务器启动时使用--socket选项设置此值。

是否支持优化器跟踪。参见MySQL 内部:跟踪优化器

对于 Linux 系统上的构建,此选项控制是否要特别注意创建与构建位置和时间无关的构建结果。

MySQL 5.7.19 中添加了此选项。

是否在 Windows 上禁用功能内联。默认为关闭(启用内联)。

是否为支持它的编译器启用 AddressSanitizer。默认为关闭。

是否启用用于范围后使用检测的 AddressSanitizer -fsanitize-address-use-after-scope Clang 标志。默认为关闭。要使用此选项,还必须启用-DWITH_ASAN

如果无法构建 LDAP 认证插件,是否报告错误:

有关 LDAP 身份验证的信息,请参阅第 6.4.1.9 节“ LDAP 可插拔身份验证”。 MySQL 5.7.19 中添加了此选项。

是否为包含此插件的源树构建 PAM 身份验证插件。 (请参阅第 6.4.1.7 节“ PAM 可插入身份验证”。)如果指定了此选项并且无法编译插件,则构建将失败。

Amazon Web Services 软件开发套件的位置。

MySQL 5.7.19 中添加了此选项。

Boost 库是构建 MySQL 所必需的。这些 CMake 选项可控制库源位置以及是否自动下载:

从 MySQL 5.7.11 开始,允许-DWITH_BOOST=system,并指示在标准位置的编译主机上安装了正确版本的 Boost。在这种情况下,将使用已安装的 Boost 版本,而不是 MySQL 源代码发行版随附的任何版本。

例如,如果您通常构建 MySQL 并将对象输出放置在 MySQL 源树的bld子目录中,则可以使用 Boost 进行构建,如下所示:

mkdir bld
cd bld
cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost

这将使 Boost 下载到主目录下的my_boost目录中。如果所需的 Boost 版本已经存在,则无需下载。如果所需的 Boost 版本更改,则下载较新的版本。

如果已经在本地安装了 Boost,并且编译器自己找到了 Boost 头文件,则可能不必指定前面的 CMake 选项。但是,如果 MySQL 所需的 Boost 版本有所更改,而本地安装的版本尚未升级,则可能会出现构建问题。使用 CMake 选项应该可以成功构建。

使用上述允许 Boost 下载到指定位置的设置,当所需的 Boost 版本更改时,您需要删除bld文件夹,重新创建它,然后再次执行 cmake 步骤。否则,可能不会下载新的 Boost 版本,并且编译可能会失败。

是否将 Client 端协议跟踪框架构建到 Client 端库中。默认情况下,启用此选项。

有关编写协议跟踪 Client 端插件的信息,请参见第 28.2.4.11 节,“编写协议跟踪插件”

另请参见WITH_TEST_TRACE_PLUGIN选项。

curl 库的位置。 * curl_type *可以是system(使用系统 curl 库)或 curl 库的路径名。

MySQL 5.7.19 中添加了此选项。

是否包括调试支持。

通过调试支持配置 MySQL,可以在启动服务器时使用--debug="d,parser_debug"选项。这将导致用于处理 SQL 语句的 Bison 解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出将写入错误日志。

UNIV_DEBUG下定义了针对InnoDB存储引擎的同步调试检查,并且在使用WITH_DEBUG选项编译调试支持时可用。编译调试支持后,可以使用innodb_sync_debug配置选项启用或禁用InnoDB同步调试检查。

从 MySQL 5.7.18 开始,启用WITH_DEBUG也将启用 Debug Sync。有关“调试同步”功能以及如何使用同步点的说明,请参见MySQL 内部:测试同步

是否使用cmake/build_configurations/feature_set.cmake中的标志。

要使用哪个libedit/editline库。允许的值为bundled(默认值)和system

WITH_EDITLINE替换了已删除的WITH_LIBEDIT

是否构建libmysqld嵌入式服务器库。

Note

从 MySQL 5.7.17 开始不推荐使用libmysqld嵌入式服务器库,并且已在 MySQL 8.0 中将其删除。

是否构建共享的libmysqld嵌入式服务器库。

Note

从 MySQL 5.7.17 开始不推荐使用libmysqld嵌入式服务器库,并且已在 MySQL 8.0 中将其删除。

要包括的额外字符集:

是否包括额外的 InnoDB 调试支持。

启用WITH_INNODB_EXTRA_DEBUG将打开额外的 InnoDB 调试检查。仅当启用WITH_DEBUG时,才能启用此选项。

googlemock 发行版的路径,用于基于 Google Test 的单元测试。该选项值是分发 Zip 文件的路径。或者,将WITH_GMOCK环境变量设置为路径名。也可以使用-DENABLE_DOWNLOADS=1CMake 从 GitHub 下载发行版。

如果您构建的 MySQL 没有基于 Google 测试的单元测试(通过配置 wihout WITH_GMOCK),则 CMake 会显示一条消息,指示如何下载它。

是否生成 memcached 共享库(libmemcached.soinnodb_engine.so)。

是否构建keyring_file插件随附的测试程序。默认值为OFF。测试文件的源代码位于plugin/keyring/keyring-test目录中。

这个选项是在 MySQL 5.7.11 中添加的。

仅供内部使用。 MySQL 5.7.29 中添加了此选项。

要使用哪个libevent库。允许的值为bundled(默认值),systemyes。如果指定systemyes,则使用系统libevent库(如果存在)。如果找不到系统库,则使用 Binding 的libevent库。 InnoDB memcached 需要libevent库。

是否包括libwrap(TCP 包装器)支持。

WITH_LZ4table 示zlib支持的来源:

是否为支持它的编译器启用 MemorySanitizer。默认为关闭。

为了使此选项生效(如果启用),还必须在启用该选项的情况下编译所有链接到 MySQL 的库。

使用此选项编译 MeCab 解析器。如果已将 MeCab 安装到其默认安装目录,请设置-DWITH_MECAB=systemsystem选项适用于使用本机软件包 ManagementUtil 从源或二进制文件执行的 MeCab 安装。如果已将 MeCab 安装到自定义安装目录,请指定 MeCab 安装的路径。例如-DWITH_MECAB=/opt/mecab。如果system选项不起作用,则在所有情况下都应指定 MeCab 安装路径。

有关相关信息,请参见第 12.9.9 节“ MeCab 全文分析器插件”

是否启用 Visual Studio CRT 内存泄漏跟踪。默认值为OFF

明确设置 NUMA 内存分配策略。 CMake 根据当前平台是否支持NUMA来设置默认的WITH_NUMA值。对于不支持 NUMA 的平台, CMake 的行为如下:

MySQL 5.7.17 中添加了此选项。

使用哪个协议缓冲区包。 * protobuf_type *可以是以下值之一:

其他值将被忽略,并回退到bundled

MySQL 5.7.12 中添加了此选项。

是否构建快速开发周期的插件。启用后,将在包含这些插件的构建树中创建一个rapid目录。禁用后,不会在构建树中创建rapid目录。默认值为ON,除非从源树中删除了rapid目录,在这种情况下默认值为OFF。 MySQL 5.7.12 中添加了此选项。

仅供内部使用。 MySQL 5.7.29 中添加了此选项。

为了支持加密连接,用于生成随机数的熵以及其他与加密相关的操作,必须使用 SSL 库来构建 MySQL。此选项指定要使用的 SSL 库。

有关配置 SSL 库的其他信息,请参见第 2.9.6 节“配置 SSL 库支持”

是否启用安装 systemd 支持文件。默认情况下,此选项处于禁用状态。启用后,将安装 systemd 支持文件,并且不会安装诸如mysqld_safe和 System V 初始化脚本之类的脚本。在 systemd 不可用的平台上,启用WITH_SYSTEMD会导致 CMake 错误。

有关使用 systemd 的更多信息,请参见第 2.5.10 节“使用 systemdManagementMySQL 服务器”。该部分还包括有关指定先前在[mysqld_safe]选项组中指定的选项的信息。因为使用 systemd 时未安装mysqld_safe,所以必须以其他方式指定此类选项。

是否构建测试协议跟踪 Client 端插件(请参见第 28.2.4.11.1 节,“使用测试协议跟踪插件”)。默认情况下,此选项处于禁用状态。除非启用WITH_CLIENT_PROTOCOL_TRACING选项,否则启用此选项无效。如果 MySQL 同时配置了两个选项,则libmysqlclientClient 端库是使用内置的测试协议跟踪插件构建的,并且所有标准 MySQLClient 端都会加载该插件。但是,即使启用了测试插件,默认情况下它也不起作用。使用环境变量可以控制插件。参见第 28.2.4.11.1 节,“使用测试协议跟踪插件”

Note

如果要使用自己的协议跟踪插件,请不要启用WITH_TEST_TRACE_PLUGIN选项,因为一次只能加载一个这样的插件,并且尝试加载第二个插件时会出错。如果已经构建了启用了测试协议跟踪插件的 MySQL 以查看其工作原理,则必须在没有 MySQL 的情况下重建 MySQL,然后才能使用自己的插件。

有关编写跟踪插件的信息,请参见第 28.2.4.11 节,“编写协议跟踪插件”

是否为支持它的编译器启用“未定义行为清理器”。默认为关闭。

如果启用,请使用单元测试编译 MySQL。除非未编译服务器,否则默认值为 ON。

为连接器/ ODBC 启用 unixODBC 支持。

是否在 Valgrind 头文件中进行编译,这会将 Valgrind API 暴露给 MySQL 代码。默认值为OFF

为了生成可识别 Valgrind 的调试版本,通常将-DWITH_VALGRIND=1-DWITH_DEBUG=1结合使用。参见构建调试配置

一些功能要求使用压缩库支持构建服务器,例如COMPRESS()UNCOMPRESS()函数,以及压缩 Client 端/服务器协议。 WITH_ZLIBtable 示zlib支持的来源:

Compiler Flags

C 编译器的标志。

C 编译器的标志。

是否使用cmake/build_configurations/compiler_options.cmake中的标志。

Note

所有的优化标志都是由 MySQL 构建团队精心选择和测试的。覆盖它们会导致意外的结果,后果自负。

在 Solaris 10 或更高版本上,启用针对libCstd而不是stlport4的链接。这仅适用于 Client 端代码,因为服务器依赖于 C 98.

要指定自己的 C 和 C 编译器标志,对于不影响优化的标志,请使用CMAKE_C_FLAGSCMAKE_CXX_FLAGS CMake 选项。

提供自己的编译器标志时,您可能还需要指定CMAKE_BUILD_TYPE

例如,要在 64 位 Linux 机器上创建 32 位发行版,请执行以下操作:

mkdir bld
cd bld
cmake .. -DCMAKE_C_FLAGS=-m32 \
  -DCMAKE_CXX_FLAGS=-m32 \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo

如果设置影响优化的标志(-Onumber),则必须设置CMAKE_C_FLAGS_build_type和/或CMAKE_CXX_FLAGS_build_type选项,其中* build_type *对应于CMAKE_BUILD_TYPE值。要为默认的构建类型(RelWithDebInfo)指定其他优化,请设置CMAKE_C_FLAGS_RELWITHDEBINFOCMAKE_CXX_FLAGS_RELWITHDEBINFO选项。例如,要在具有-O3和调试符号的 Linux 上进行编译,请执行以下操作:

cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
  -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"

用于编译 NDB 群集的 CMake 选项

在使用 NDB Cluster 源构建 NDB Cluster 时,可以使用以下选项;使用 MySQL 5.6 服务器树中的源时,当前不支持它们。

使用安装在* dir_name *指示的系统目录中的 memcached(1.6 或更高版本)执行构建。此安装中用于构建的文件包括 memcached 二进制文件,头文件和库,以及memcached_utilities库和头文件engine_testapp.h

使用 Binding 的 Memcached 源构建ndbmemcache时,必须保留此选项的设置(WITH_BUNDLED_MEMCACHED选项);换句话说,默认情况下使用 Binding 的来源。

虽然从外部源编译 memcached 时可以使用其他 CMake 选项(例如,用于 SASL 授权和提供dtrace支持),但是当前 Binding 的 memcached 源未启用这些选项。使用 NDB 群集。

使用ndbmemcached支持构建 NDB 群集时,请使用 NDB 群集源中包含的libevent。默认启用。 OFF导致改用系统的libevent

构建 NDB 群集源树中包含的 memcached 源,然后在构建ndbmemcache引擎时使用生成的 memcached 服务器。在这种情况下, make install 会将 memcached 二进制文件放置在安装bin目录中,并将ndbmemcache引擎共享库文件ndb_engine.so放置在安装lib目录中。

默认情况下,此选项为 ON。

设置用于构建 NDB Cluster Connector for Java 的 Classpath。默认为空。如果使用-DWITH_NDB_JAVA=OFF,则忽略此选项。

NDB内核中启用错误注入。仅用于测试;不适用于构建生产二进制文件。默认值为OFF

构建并链接以支持mysqld中的NDB(NDBCLUSTER)存储引擎。默认值为ON

这是WITH_NDBCLUSTER_STORAGE_ENGINE的别名。

构建多线程数据节点可执行文件ndbmtd。默认值为ON

默认情况下,在使用此选项构建的mysqld中启用二进制日志记录。默认为开。

启用构建 NDB 群集二进制文件的调试版本。默认关闭。

启用使用 Java 支持(包括ClusterJ)构建 NDB 群集。

默认情况下,此选项为 ON。如果您不希望使用 Java 支持编译 NDB 群集,则必须在运行 CMake 时通过指定-DWITH_NDB_JAVA=OFF显式禁用它。否则,如果找不到 Java,则构建的配置将失败。

默认情况下,使 NDB 群集 Management 服务器(ndb_mgmd)构建为使用此* port *。如果未设置此选项,则默认情况下,结果 Management 服务器将尝试使用端口 1186.

如果启用,请包括一组 NDB API 测试程序。默认为关闭。

首页