MySQL 源配置选项
MySQL 源配置选项
CMake程序提供了对如何配置 MySQL 源代码分发的大量控制。通常,您可以使用 CMake命令行上的选项来执行此操作。有关CMake支持的选项的信息,请在顶级源目录中运行以下命令之一:
$> cmake . -LH
$> ccmake .您还可以使用某些环境变量影响CMake 。请参见 第 6.9 节“环境变量”。
对于布尔选项,可以将该值指定为 1或ON来启用该选项,或者指定为0或OFF来禁用该选项。
许多选项配置编译时默认值,可以在服务器启动时覆盖这些默认值。例如, CMAKE_INSTALL_PREFIX配置 默认安装基目录位置、TCP/IP 端口号和 Unix 套接字文件的 、 和MYSQL_TCP_PORT选项 可以在服务器启动时使用mysqld 的、 和 选项 进行更改。在适用的情况下,配置选项描述指示相应的mysqld 启动选项。 MYSQL_UNIX_ADDR--basedir--port--socket
以下部分提供有关 CMake选项的更多信息。
CMake 选项参考
下表显示了可用的CMake 选项。其中Default, PREFIX代表 CMAKE_INSTALL_PREFIX选项的值,指定安装基目录。该值用作多个安装子目录的父位置。
表 2.13 MySQL 源配置选项参考 (CMake)
| 格式 | 描述 | 默认 |
|---|---|---|
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
ADD_GDB_INDEX |
是否启用二进制文件中 .gdb_index 部分的生成 | |
| - | - | - |
BUILD_CONFIG |
使用与官方版本相同的构建选项 | |
BUNDLE_RUNTIME_LIBRARIES |
将运行时库与适用于 Windows 的服务器 MSI 和 Zip 包捆绑在一起 | OFF |
CMAKE_BUILD_TYPE |
要生产的构建类型 | RelWithDebInfo |
CMAKE_CXX_FLAGS |
C++ 编译器的标志 | |
CMAKE_C_FLAGS |
C 编译器的标志 | |
CMAKE_INSTALL_PREFIX |
安装基目录 | /usr/local/mysql |
COMPILATION_COMMENT |
编译环境评论 | |
COMPILATION_COMMENT_SERVER |
关于mysqld使用的编译环境的评论 | |
COMPRESS_DEBUG_SECTIONS |
压缩二进制可执行文件的调试部分 | OFF |
CPACK_MONOLITHIC_INSTALL |
包构建是否生成单个文件 | OFF |
DEFAULT_CHARSET |
默认服务器字符集 | utf8mb4 |
DEFAULT_COLLATION |
默认服务器排序规则 | utf8mb4_0900_ai_ci |
DISABLE_PSI_COND |
排除性能架构条件检测 | OFF |
DISABLE_PSI_DATA_LOCK |
排除性能模式数据锁检测 | OFF |
DISABLE_PSI_ERROR |
排除性能架构服务器错误检测 | 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 |
排除 Performance Schema 阶段仪表 | OFF |
DISABLE_PSI_STATEMENT |
排除性能模式语句检测 | OFF |
DISABLE_PSI_STATEMENT_DIGEST |
排除性能模式语句_摘要检测 | OFF |
DISABLE_PSI_TABLE |
排除性能架构表检测 | OFF |
DISABLE_PSI_THREAD |
排除性能模式线程检测 | OFF |
DISABLE_PSI_TRANSACTION |
排除性能模式事务检测 | OFF |
ENABLED_LOCAL_INFILE |
是否为LOAD DATA启用LOCAL | OFF |
ENABLED_PROFILING |
是否启用查询分析代码 | ON |
ENABLE_EXPERIMENTAL_SYSVARS |
是否启用实验性InnoDB系统变量 | OFF |
ENABLE_GCOV |
是否包含 gcov 支持 | |
ENABLE_GPROF |
启用 gprof(仅限优化的 Linux 版本) | OFF |
FORCE_COLORED_OUTPUT |
是否对编译器输出进行着色 | OFF |
FORCE_INSOURCE_BUILD |
是否强制进行源内构建 | OFF |
FORCE_UNSUPPORTED_COMPILER |
是否允许不支持的编译器 | OFF |
FPROFILE_GENERATE |
是否生成配置文件引导优化数据 | OFF |
FPROFILE_USE |
是否使用配置文件引导优化数据 | OFF |
HAVE_PSI_MEMORY_INTERFACE |
为过度对齐类型的动态存储中使用的内存分配函数启用性能模式内存跟踪模块 | OFF |
IGNORE_AIO_CHECK |
使用 -DBUILD_CONFIG=mysql_release,忽略 libaio 检查 | OFF |
INSTALL_BINDIR |
用户可执行文件目录 | PREFIX/bin |
INSTALL_DOCDIR |
文档目录 | PREFIX/docs |
INSTALL_DOCREADMEDIR |
自述文件目录 | PREFIX |
INSTALL_INCLUDEDIR |
头文件目录 | PREFIX/include |
INSTALL_INFODIR |
信息文件目录 | PREFIX/docs |
INSTALL_LAYOUT |
选择预定义的安装布局 | STANDALONE |
INSTALL_LIBDIR |
库文件目录 | PREFIX/lib |
INSTALL_MANDIR |
手册页目录 | PREFIX/man |
INSTALL_MYSQLKEYRINGDIR |
keyring_file 插件数据文件的目录 | platform specific |
INSTALL_MYSQLSHAREDIR |
共享数据目录 | PREFIX/share |
INSTALL_MYSQLTESTDIR |
mysql-测试目录 | PREFIX/mysql-test |
INSTALL_PKGCONFIGDIR |
mysqlclient.pc pkg-config 文件的目录 | INSTALL_LIBDIR/pkgconfig |
INSTALL_PLUGINDIR |
插件目录 | PREFIX/lib/plugin |
INSTALL_PRIV_LIBDIR |
安装私有库目录 | |
INSTALL_SBINDIR |
服务器可执行目录 | PREFIX/bin |
INSTALL_SECURE_FILE_PRIVDIR |
secure_file_priv 默认值 | platform specific |
INSTALL_SHAREDIR |
aclocal/mysql.m4安装目录 | PREFIX/share |
INSTALL_STATIC_LIBRARIES |
是否安装静态库 | ON |
INSTALL_SUPPORTFILESDIR |
额外支持文件目录 | PREFIX/support-files |
LINK_RANDOMIZE |
是否随机化 mysqld 二进制文件中符号的顺序 | OFF |
LINK_RANDOMIZE_SEED |
LINK_RANDOMIZE 选项的种子值 | mysql |
MAX_INDEXES |
每个表的最大索引数 | 64 |
MSVC_CPPCHECK |
启用 MSVC 代码分析。 | ON |
MUTEX_TYPE |
InnoDB互斥体类型 | event |
MYSQLX_TCP_PORT |
X 插件使用的 TCP/IP 端口号 | 33060 |
MYSQLX_UNIX_ADDR |
X 插件使用的 Unix 套接字文件 | /tmp/mysqlx.sock |
MYSQL_DATADIR |
数据目录 | |
MYSQL_MAINTAINER_MODE |
是否启用MySQL维护者专用的开发环境 | OFF |
MYSQL_PROJECT_NAME |
Windows/macOS 项目名称 | MySQL |
MYSQL_TCP_PORT |
TCP/IP 端口号 | 3306 |
MYSQL_UNIX_ADDR |
Unix 套接字文件 | /tmp/mysql.sock |
NDB_UTILS_LINK_DYNAMIC |
导致 NDB 工具动态链接到 ndbclient | |
ODBC_INCLUDES |
ODBC 包含目录 | |
ODBC_LIB_DIR |
ODBC 库目录 | |
OPTIMIZER_TRACE |
是否支持优化器跟踪 | |
OPTIMIZE_SANITIZER_BUILDS |
是否优化消毒剂构建 | ON |
REPRODUCIBLE_BUILD |
要格外小心地创建独立于构建位置和时间的构建结果 | |
SHOW_SUPPRESSED_COMPILER_WARNING |
是否显示抑制的编译器警告并且不会因 -Werror 而失败。 | OFF |
SYSCONFDIR |
选项文件目录 | |
SYSTEMD_PID_DIR |
systemd下PID文件的目录 | /var/run/mysqld |
SYSTEMD_SERVICE_NAME |
systemd下MySQL服务的名称 | mysqld |
TMPDIR |
tmpdir 默认值 | |
WIN_DEBUG_NO_INLINE |
是否禁用函数内联 | OFF |
WITHOUT_SERVER |
不搭建服务器 | OFF |
WITHOUT_xxx_STORAGE_ENGINE |
从构建中排除存储引擎 xxx | |
WITH_ANT |
用于构建 GCS Java 包装器的 Ant 路径 | |
WITH_ASAN |
启用AddressSanitizer | OFF |
WITH_ASAN_SCOPE |
启用 AddressSanitizer -fsanitize-address-use-after-scope Clang 标志 | OFF |
WITH_AUTHENTICATION_CLIENT_PLUGINS |
如果构建了任何相应的服务器身份验证插件,则自动启用 | |
WITH_AUTHENTICATION_LDAP |
LDAP认证插件无法构建时是否报错 | OFF |
WITH_AUTHENTICATION_PAM |
构建 PAM 身份验证插件 | OFF |
WITH_AWS_SDK |
Amazon Web Services 软件开发工具包的位置 | |
WITH_BUILD_ID |
在 Linux 系统上,生成唯一的构建 ID | ON |
WITH_CLASSPATH |
构建适用于 Java 的 MySQL Cluster Connector 时使用的类路径。默认为空字符串。 | |
WITH_CLIENT_PROTOCOL_TRACING |
构建客户端协议追踪框架 | ON |
WITH_CURL |
curl库的位置 | |
WITH_DEBUG |
是否包含调试支持 | OFF |
WITH_DEFAULT_COMPILER_OPTIONS |
是否使用默认编译器选项 | ON |
WITH_DEVELOPER_ENTITLEMENTS |
是否向 macOS 上的所有可执行文件添加“get-task-allow”权限,以便在服务器意外停止时生成核心转储 | OFF |
WITH_EDITLINE |
使用哪个 libedit/editline 库 | bundled |
WITH_ERROR_INSERT |
在 NDB 存储引擎中启用错误注入。不应用于构建用于生产的二进制文件。 | OFF |
WITH_FIDO |
FIDO 库支持的类型 | bundled |
WITH_ICU |
ICU 支持类型 | bundled |
WITH_INNODB_EXTRA_DEBUG |
是否包含对 InnoDB 的额外调试支持。 | OFF |
WITH_JEMALLOC |
是否与-ljemalloc链接 | OFF |
WITH_KEYRING_TEST |
构建密钥环测试程序 | OFF |
WITH_LD |
是否使用LLVM lld或mold链接器 | |
WITH_LIBEVENT |
使用哪个 libevent 库 | bundled |
WITH_LIBWRAP |
是否包含libwrap(TCP包装器)支持 | OFF |
WITH_LOCK_ORDER |
是否启用LOCK_ORDER工具 | OFF |
WITH_LSAN |
是否运行LeakSanitizer,不运行AddressSanitizer | OFF |
WITH_LTO |
启用链接时间优化器 | OFF |
WITH_LZ4 |
LZ4 库支持的类型 | bundled |
WITH_MECAB |
编译 MeCab | |
WITH_MSAN |
启用 MemorySanitizer | OFF |
WITH_MSCRT_DEBUG |
启用 Visual Studio CRT 内存泄漏跟踪 | OFF |
WITH_MYSQLX |
是否禁用X协议 | ON |
WITH_NDB |
构建 MySQL NDB 集群 | OFF |
WITH_NDBAPI_EXAMPLES |
构建API示例程序 | OFF |
WITH_NDBCLUSTER |
构建NDB存储引擎 | OFF |
WITH_NDBCLUSTER_STORAGE_ENGINE |
供内部使用;可能无法在所有情况下按预期工作;用户应该使用WITH_NDBCLUSTER来代替 | ON |
WITH_NDBMTD |
构建多线程数据节点。 | ON |
WITH_NDB_DEBUG |
生成用于测试或故障排除的调试版本。 | OFF |
WITH_NDB_JAVA |
启用 Java 和 ClusterJ 支持的构建。默认启用。仅在 MySQL 集群中受支持。 | ON |
WITH_NDB_PORT |
使用此选项构建的管理服务器使用的默认端口。如果未使用此选项来构建它,则管理服务器的默认端口为 1186。 | [none] |
WITH_NDB_TEST |
包括 NDB API 测试程序。 | OFF |
WITH_NDB_TLS_SEARCH_PATH |
NDB 程序用于搜索 TLS 证书和密钥文件的默认路径。 | $HOME/ndb-tls |
WITH_NUMA |
设置NUMA内存分配策略 | |
WITH_PACKAGE_FLAGS |
对于通常用于 RPM/DEB 包的标志,是否将它们添加到这些平台上的独立构建中 | |
WITH_PROTOBUF |
使用哪个 Protocol Buffers 包 | bundled |
WITH_RAPID |
是否构建快速开发周期插件 | ON |
WITH_RAPIDJSON |
RapidJSON 支持的类型 | bundled |
WITH_ROUTER |
是否构建MySQL Router | ON |
WITH_SHOW_PARSE_TREE |
支持 SHOW PARSE_TREE 调试语句 | |
WITH_SSL |
SSL 支持类型 | system |
WITH_SYSTEMD |
启用 systemd 支持文件的安装 | OFF |
WITH_SYSTEMD_DEBUG |
启用额外的 systemd 调试信息 | OFF |
WITH_SYSTEM_LIBS |
设置未明确设置的库选项的系统值 | OFF |
WITH_TCMALLOC |
是否与-ltcmalloc链接 | OFF |
WITH_TEST_TRACE_PLUGIN |
构建测试协议跟踪插件 | OFF |
WITH_TSAN |
启用 ThreadSanitizer | OFF |
WITH_UBSAN |
启用未定义行为清理程序 | OFF |
WITH_UNIT_TESTS |
使用单元测试编译 MySQL | ON |
WITH_UNIXODBC |
启用 unixODBC 支持 | OFF |
WITH_VALGRIND |
是否在Valgrind头文件中编译 | OFF |
WITH_WIN_JEMALLOC |
包含 jemalloc.dll 的目录的路径 | |
WITH_ZLIB |
zlib 支持的类型 | bundled |
WITH_ZSTD |
zstd 支持的类型 | bundled |
WITH_xxx_STORAGE_ENGINE |
将存储引擎xxx静态编译到服务器中 |
常规选项
-DBUILD_CONFIG=mysql_release此选项使用与 Oracle 用于生成官方 MySQL 版本的二进制发行版相同的构建选项来配置源发行版。-DWITH_BUILD_ID=<em class="replaceable"><code>bool</code></em>在 Linux 系统上,生成一个唯一的构建 ID,用作build_id系统变量的值并在启动时写入 MySQL 服务器日志。将此选项设置为OFF禁用此功能。该选项对 Linux 以外的平台没有影响。
-DBUNDLE_RUNTIME_LIBRARIES=<em class="replaceable"><code>bool</code></em>是否将运行时库与 Windows 的服务器 MSI 和 Zip 包捆绑在一起。-DCMAKE_BUILD_TYPE=<em class="replaceable"><code>type</code></em>要生成的构建类型:RelWithDebInfo:启用优化并生成调试信息。这是默认的 MySQL 构建类型。Release:启用优化但省略调试信息以减少构建大小。Debug:禁用优化并生成调试信息。如果WITH_DEBUG启用该选项,也会使用此构建类型。即与-DWITH_DEBUG=1具有相同的效果-DCMAKE_BUILD_TYPE=Debug。
不支持 选项值
None和 。MinSizeRel-DCPACK_MONOLITHIC_INSTALL=<em class="replaceable"><code>bool</code></em>该选项影响make package操作是生成多个安装包文件还是单个文件。如果禁用,该操作会生成多个安装包文件,如果您只想安装完整 MySQL 安装的子集,这可能很有用。如果启用,它会生成一个用于安装所有内容的文件。-DFORCE_INSOURCE_BUILD=<em class="replaceable"><code>bool</code></em>定义是否强制进行源内构建。建议使用源外构建,因为它们允许来自同一源的多个构建,并且可以通过删除构建目录来快速执行清理。要强制进行源内构建,请 使用-DFORCE_INSOURCE_BUILD=ON.-DFORCE_COLORED_OUTPUT=<em class="replaceable"><code>bool</code></em>定义在命令行编译时 是否启用 gcc和clang的彩色编译器输出。默认为OFF.
安装布局选项
该CMAKE_INSTALL_PREFIX选项指示基本安装目录。名称形式 指示组件位置的其他选项是相对于前缀进行解释的,它们的值是相对路径名。它们的值不应包含前缀。 INSTALL_<em class="replaceable"><code>xxx</code></em>
-DCMAKE_INSTALL_PREFIX=<em class="replaceable"><code>dir_name</code></em>安装基目录。可以在服务器启动时使用该选项设置该值
--basedir。-DINSTALL_BINDIR=<em class="replaceable"><code>dir_name</code></em>安装用户程序的位置。-DINSTALL_DOCDIR=<em class="replaceable"><code>dir_name</code></em>在哪里安装文档。-DINSTALL_DOCREADMEDIR=<em class="replaceable"><code>dir_name</code></em>安装文件的位置README。-DINSTALL_INCLUDEDIR=<em class="replaceable"><code>dir_name</code></em>安装头文件的位置。-DINSTALL_INFODIR=<em class="replaceable"><code>dir_name</code></em>安装信息文件的位置。-DINSTALL_LAYOUT=<em class="replaceable"><code>name</code></em>选择预定义的安装布局:STANDALONE:与.tar.gz和.zip包使用的布局相同。这是默认设置。RPM:布局类似于 RPM 包。SVR4:Solaris 软件包布局。DEB:DEB 包布局(实验性)。
您可以选择预定义的布局,但可以通过指定其他选项来修改各个组件的安装位置。例如:
terminalcmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data该值决定、 和 系统变量
INSTALL_LAYOUT的默认值 。请参阅第 7.1.8 节“服务器系统变量”和 第 8.4.4.19 节“密钥环系统变量”中对这些变量的描述 。secure_file_privkeyring_encrypted_file_datakeyring_file_data-DINSTALL_LIBDIR=<em class="replaceable"><code>dir_name</code></em>安装库文件的位置。-DINSTALL_MANDIR=<em class="replaceable"><code>dir_name</code></em>安装手册页的位置。-DINSTALL_MYSQLKEYRINGDIR=<em class="replaceable"><code>dir_path</code></em>用作keyring_file插件数据文件位置的默认目录。默认值是特定于平台的,并且取决于CMake选项的值;请参阅第 7.1.8 节“服务器系统变量”中系统变量的描述 。INSTALL_LAYOUTkeyring_file_data-DINSTALL_MYSQLSHAREDIR=<em class="replaceable"><code>dir_name</code></em>在哪里安装共享数据文件。-DINSTALL_MYSQLTESTDIR=<em class="replaceable"><code>dir_name</code></em>安装目录在哪里mysql-test。要禁止安装此目录,请显式将该选项设置为空值 (-DINSTALL_MYSQLTESTDIR=)。-DINSTALL_PKGCONFIGDIR=<em class="replaceable"><code>dir_name</code></em>安装pkg-configmysqlclient.pc使用的文件 的目录 。默认值为 ,除非 以 结尾 ,在这种情况下首先将其删除。INSTALL_LIBDIR/pkgconfigINSTALL_LIBDIR/mysql-DINSTALL_PLUGINDIR=<em class="replaceable"><code>dir_name</code></em>插件目录的位置。可以在服务器启动时使用该选项设置该值
--plugin_dir。-DINSTALL_PRIV_LIBDIR=<em class="replaceable"><code>dir_name</code></em>动态库目录的位置。**默认位置。 ** 对于 RPM 版本,这是
/usr/lib64/mysql/private/,对于 DEB 是/usr/lib/mysql/private/,对于 TAR 是lib/private/。**原型缓冲区。 ** 由于这是私有位置,因此加载程序(例如
ld-linux.so在 Linux 上)在没有帮助的情况下可能找不到libprotobuf.so文件。为了引导加载程序,RPATH=$ORIGIN/../$INSTALL_PRIV_LIBDIR添加到mysqld和 mysqlxtest。这适用于大多数情况,但当使用 资源组 功能时,mysqld是setsuid,并且加载程序会忽略任何RPATH包含$ORIGIN.为了克服这个问题,在mysqld的 DEB 和 RPM 版本中设置了目录的显式完整路径,因为目标目的地是已知的。对于 tarball 安装,需要使用 patchelf等工具 修补 mysqld 。-DINSTALL_SBINDIR=<em class="replaceable"><code>dir_name</code></em>在哪里安装mysqld服务器。-DINSTALL_SECURE_FILE_PRIVDIR=<em class="replaceable"><code>dir_name</code></em>系统变量的默认值secure_file_priv。默认值是特定于平台的,并且取决于CMake选项的值 ;请参阅第 7.1.8 节“服务器系统变量”中系统变量的描述 。INSTALL_LAYOUTsecure_file_priv-DINSTALL_SHAREDIR=<em class="replaceable"><code>dir_name</code></em>在哪里安装aclocal/mysql.m4。-DINSTALL_STATIC_LIBRARIES=<em class="replaceable"><code>bool</code></em>是否安装静态库。默认为ON.如果设置为OFF,则不会安装这些库文件:libmysqlclient.a、libmysqlservices.a。-DINSTALL_SUPPORTFILESDIR=<em class="replaceable"><code>dir_name</code></em>在哪里安装额外的支持文件。-DLINK_RANDOMIZE=<em class="replaceable"><code>bool</code></em>是否随机化mysqld二进制文件 中符号的顺序 。默认为OFF.仅应出于调试目的启用此选项。-DLINK_RANDOMIZE_SEED=<em class="replaceable"><code>val</code></em>期权的种子值LINK_RANDOMIZE。该值是一个字符串。默认值为mysql,任意选择。-DMYSQL_DATADIR=<em class="replaceable"><code>dir_name</code></em>MySQL 数据目录的位置。可以在服务器启动时使用该选项设置该值
--datadir。-DODBC_INCLUDES=<em class="replaceable"><code>dir_name</code></em>ODBC 的位置包括目录,在配置 Connector/ODBC 时可以使用该目录。-DODBC_LIB_DIR=<em class="replaceable"><code>dir_name</code></em>ODBC 库目录的位置,在配置 Connector/ODBC 时可能会使用该目录。-DSYSCONFDIR=<em class="replaceable"><code>dir_name</code></em>默认my.cnf选项文件目录。该位置无法在服务器启动时设置,但您可以使用 选项通过给定选项文件启动服务器 ,其中是文件的完整路径名。
--defaults-file=<em class="replaceable"><code>file_name</code></em>file_name-DSYSTEMD_PID_DIR=<em class="replaceable"><code>dir_name</code></em>MySQL由systemd管理时创建PID文件的目录名。默认为/var/run/mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。WITH_SYSTEMD除非启用, 否则该选项将被忽略 。-DSYSTEMD_SERVICE_NAME=<em class="replaceable"><code>name</code></em>当 MySQL 由systemd 管理时要使用的 MySQL 服务的名称。默认为mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。WITH_SYSTEMD除非启用, 否则该选项将被忽略 。-DTMPDIR=<em class="replaceable"><code>dir_name</code></em>用于tmpdir系统变量的默认位置。如果未指定,则该值默认为P_tmpdirin<stdio.h>。
存储引擎选项
存储引擎是作为插件构建的。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须使用INSTALL PLUGIN 语句或选项将其安装到服务器中--plugin-load 才能使用)。某些插件可能不支持静态或动态构建。
InnoDB、 MyISAM、 MERGE、 MEMORY和 引擎CSV是强制性的(始终编译到服务器中)并且不需要显式安装。
要将存储引擎静态编译到服务器中,请使用 .一些允许的值为 、、 和。例子: -DWITH_<em class="replaceable"><code>engine</code></em>_STORAGE_ENGINE=1engineARCHIVE``BLACKHOLE``EXAMPLE``FEDERATED
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1要构建支持 NDB Cluster 的 MySQL,请使用该 WITH_NDB选项。
笔记
如果没有性能模式支持,则无法进行编译。如果希望在不使用特定类型的工具的情况下进行编译,可以使用以下 CMake选项来完成:
DISABLE_PSI_COND
DISABLE_PSI_DATA_LOCK
DISABLE_PSI_ERROR
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.
要从构建中排除存储引擎,请使用 .例子: -DWITH_<em class="replaceable"><code>engine</code></em>_STORAGE_ENGINE=0
-DWITH_ARCHIVE_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0也可以从构建中排除存储引擎 (但这 是首选)。例子: -DWITHOUT_<em class="replaceable"><code>engine</code></em>_STORAGE_ENGINE=1``-DWITH_<em class="replaceable"><code>engine</code></em>_STORAGE_ENGINE=0
-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1如果给定存储引擎既没有 指定 也没有 指定,则该引擎将构建为共享模块,如果不能构建为共享模块则将其排除。 -DWITH_<em class="replaceable"><code>engine</code></em>_STORAGE_ENGINE``-DWITHOUT_<em class="replaceable"><code>engine</code></em>_STORAGE_ENGINE
功能选项
-DADD_GDB_INDEX=<em class="replaceable"><code>bool</code></em>此选项确定是否启用.gdb_index二进制文件中的节的生成,这使得将它们更快地加载到调试器中。默认情况下该选项处于禁用状态。使用lld链接器,并通过 禁用它。如果使用 lld或 GNU gold以外的链接器,则无效 。-DCOMPILATION_COMMENT=<em class="replaceable"><code>string</code></em>关于编译环境的描述性注释。当mysqld使用 时COMPILATION_COMMENT_SERVER,其他程序也使用COMPILATION_COMMENT.-DCOMPRESS_DEBUG_SECTIONS=<em class="replaceable"><code>bool</code></em>是否压缩二进制可执行文件的调试部分(仅限 Linux)。压缩可执行调试部分可以节省空间,但代价是在构建过程中需要额外的 CPU 时间。默认为
OFF.如果未显式设置此选项但COMPRESS_DEBUG_SECTIONS设置了环境变量,则该选项将从该变量获取其值。-DCOMPILATION_COMMENT_SERVER=<em class="replaceable"><code>string</code></em>关于mysqld使用的编译环境的描述性注释(例如,设置version_comment系统变量)。服务器以外的程序使用COMPILATION_COMMENT。-DDEFAULT_CHARSET=<em class="replaceable"><code>charset_name</code></em>服务器字符集。默认情况下,MySQL 使用该utf8mb4字符集。*
charset_name*可以 是以下之一binary:armscii8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 。ascii``big5``cp1250``cp1251``cp1256``cp1257``cp850``cp852``cp866``cp932``dec8``eucjpms``euckr``gb2312``gbk``geostd8``greek``hebrew``hp8``keybcs2``koi8r``koi8u``latin1``latin2``latin5``latin7``macce``macroman``sjis``swe7``tis620``ucs2``ujis``utf8mb3``utf8mb4``utf16``utf16le``utf32可以在服务器启动时使用该选项设置该值
--character-set-server。-DDEFAULT_COLLATION=<em class="replaceable"><code>collation_name</code></em>服务器排序规则。默认情况下,MySQL 使用utf8mb4_0900_ai_ci.使用该SHOW COLLATION语句确定每个字符集可用的排序规则。可以在服务器启动时使用该选项设置该值
--collation_server。-DDISABLE_PSI_COND=<em class="replaceable"><code>bool</code></em>是否排除性能模式条件检测。默认为OFF(包含)。-DDISABLE_PSI_FILE=<em class="replaceable"><code>bool</code></em>是否排除性能架构文件检测。默认为OFF(包含)。-DDISABLE_PSI_IDLE=<em class="replaceable"><code>bool</code></em>是否排除性能模式空闲检测。默认为OFF(包含)。-DDISABLE_PSI_MEMORY=<em class="replaceable"><code>bool</code></em>是否排除性能模式内存检测。默认为OFF(包含)。-DDISABLE_PSI_METADATA=<em class="replaceable"><code>bool</code></em>是否排除性能模式元数据检测。默认为OFF(包含)。-DDISABLE_PSI_MUTEX=<em class="replaceable"><code>bool</code></em>是否排除性能模式互斥检测。默认为OFF(包含)。-DDISABLE_PSI_RWLOCK=<em class="replaceable"><code>bool</code></em>是否排除性能架构 rwlock 检测。默认为OFF(包含)。-DDISABLE_PSI_SOCKET=<em class="replaceable"><code>bool</code></em>是否排除性能模式套接字检测。默认为OFF(包含)。-DDISABLE_PSI_SP=<em class="replaceable"><code>bool</code></em>是否排除性能模式存储的程序检测。默认为OFF(包含)。-DDISABLE_PSI_STAGE=<em class="replaceable"><code>bool</code></em>是否排除 Performance Schema 阶段检测。默认为OFF(包含)。-DDISABLE_PSI_STATEMENT=<em class="replaceable"><code>bool</code></em>是否排除 Performance Schema 语句检测。默认为OFF(包含)。-DDISABLE_PSI_STATEMENT_DIGEST=<em class="replaceable"><code>bool</code></em>是否排除性能模式语句摘要检测。默认为OFF(包含)。-DDISABLE_PSI_TABLE=<em class="replaceable"><code>bool</code></em>是否排除性能模式表检测。默认为OFF(包含)。-DDISABLE_PSI_PS=<em class="replaceable"><code>bool</code></em>排除性能模式准备好的语句实例检测。默认为OFF(包含)。-DDISABLE_PSI_THREAD=<em class="replaceable"><code>bool</code></em>排除性能模式线程检测。默认为OFF(包含)。仅在没有任何检测的情况下构建时禁用线程,因为其他检测依赖于线程。
-DDISABLE_PSI_TRANSACTION=<em class="replaceable"><code>bool</code></em>排除性能模式事务工具。默认为OFF(包含)。-DDISABLE_PSI_DATA_LOCK=<em class="replaceable"><code>bool</code></em>排除性能模式数据锁检测。默认为OFF(包含)。-DDISABLE_PSI_ERROR=<em class="replaceable"><code>bool</code></em>排除性能模式服务器错误检测。默认为OFF(包含)。-DENABLE_EXPERIMENTAL_SYSVARS=<em class="replaceable"><code>bool</code></em>是否启用实验InnoDB系统变量。实验系统变量适用于那些从事 MySQL 开发的人员,只能在开发或测试环境中使用,并且可能会在未来的 MySQL 版本中删除,恕不另行通知。有关实验系统变量的信息,请参阅/storage/innobase/handler/ha_innodb.ccMySQL 源代码树。实验系统变量可以通过搜索“ PLUGIN_VAR_EXPERIMENTAL ”来识别 。-DWITHOUT_SERVER=<em class="replaceable"><code>bool</code></em>是否构建不带MySQL Server。默认值为“关闭”,这会构建服务器。这被认为是一个实验性的选择;最好与服务器一起构建。
-DENABLE_GCOV=<em class="replaceable"><code>bool</code></em>是否包含gcov支持(仅限 Linux)。-DENABLE_GPROF=<em class="replaceable"><code>bool</code></em>是否启用gprof(仅限优化的 Linux 版本)。-DENABLED_LOCAL_INFILE=<em class="replaceable"><code>bool</code></em>LOCAL该选项控制MySQL 客户端库的 编译默认 功能。因此,未做出明确安排的客户端会LOCAL根据ENABLED_LOCAL_INFILEMySQL 构建时指定的设置禁用或启用功能。默认情况下,MySQL 二进制发行版中的客户端库在编译时
ENABLED_LOCAL_INFILE禁用。如果您从源代码编译 MySQL,请ENABLED_LOCAL_INFILE根据未做出明确安排的客户端是否应禁用或启用LOCAL功能分别将其配置为禁用或启用。ENABLED_LOCAL_INFILE控制客户端LOCAL功能的默认值。对于服务器来说,local_infile系统变量控制服务器端的LOCAL能力。要显式地使服务器拒绝或允许LOAD DATA LOCAL语句(无论客户端程序和库在构建时或运行时如何配置),请分别以 禁用或启用的方式启动mysqld--local-infile。local_infile也可以在运行时设置。请参见 第 8.1.6 节“LOAD DATA LOCAL 的安全注意事项”。-DENABLED_PROFILING=<em class="replaceable"><code>bool</code></em>是否启用查询分析代码(对于SHOW PROFILE和SHOW PROFILES语句)。-DFORCE_UNSUPPORTED_COMPILER=<em class="replaceable"><code>bool</code></em>默认情况下,CMake检查支持的编译器的最低版本 ;要禁用此检查,请使用-DFORCE_UNSUPPORTED_COMPILER=ON.-DSHOW_SUPPRESSED_COMPILER_WARNINGS=<em class="replaceable"><code>bool</code></em>显示抑制的编译器警告,并且这样做不会因-Werror.默认为OFF.-DFPROFILE_GENERATE=<em class="replaceable"><code>bool</code></em>是否生成配置文件引导优化 (PGO) 数据。此选项可用于通过 GCC 试验 PGO。cmake/fprofile.cmake有关使用FPROFILE_GENERATE和 的 信息,请参阅MySQL 源代码发行版FPROFILE_USE。这些选项已使用 GCC 8 和 9 进行了测试。-DFPROFILE_USE=<em class="replaceable"><code>bool</code></em>是否使用配置文件引导优化 (PGO) 数据。此选项可用于通过 GCC 试验 PGO。cmake/fprofile.cmake有关使用FPROFILE_GENERATE和 的 信息,请参阅MySQL 源代码发行版中的文件FPROFILE_USE。这些选项已使用 GCC 8 和 9 进行了测试。启用
FPROFILE_USE还可以启用WITH_LTO.-DHAVE_PSI_MEMORY_INTERFACE=<em class="replaceable"><code>bool</code></em>是否为过度对齐类型的动态存储中使用的 内存分配函数(库函数)启用性能模式内存跟踪模块。ut::aligned_<em class="replaceable"><code>name</code></em>-DIGNORE_AIO_CHECK=<em class="replaceable"><code>bool</code></em>如果-DBUILD_CONFIG=mysql_release在 Linux 上给出该选项,则libaio默认情况下必须链接该库。如果您没有libaio或不想安装它,您可以通过指定 来取消对它的检查-DIGNORE_AIO_CHECK=1。-DMAX_INDEXES=<em class="replaceable"><code>num</code></em>每个表的最大索引数。默认值为 64。最大值为 255。小于 64 的值将被忽略,并使用默认值 64。-DMYSQL_MAINTAINER_MODE=<em class="replaceable"><code>bool</code></em>是否启用 MySQL 维护者特定的开发环境。如果启用,此选项会导致编译器警告变为错误。-DWITH_DEVELOPER_ENTITLEMENTS=<em class="replaceable"><code>bool</code></em>是否get-task-allow向所有可执行文件添加在服务器意外停止时生成核心转储的权利。在 macOS 11+ 上,核心转储仅限于具有
com.apple.security.get-task-allow此 CMake 选项启用的权利的进程。该权利允许其他进程附加和读取/修改进程内存,并允许--core-file按预期运行。-DMUTEX_TYPE=<em class="replaceable"><code>type</code></em>所使用的互斥锁类型InnoDB。选项包括:event:使用事件互斥体。这是默认值和原始InnoDB互斥体实现。sys:在 UNIX 系统上使用 POSIX 互斥体。使用CRITICAL_SECTIONWindows 上的对象(如果可用)。futex:使用 Linux futexes 而不是条件变量来调度等待线程。
-DMYSQLX_TCP_PORT=<em class="replaceable"><code>port_num</code></em>X Plugin 侦听 TCP/IP 连接的端口号。默认值为 33060。该值可以在服务器启动时使用系统变量设置
mysqlx_port。-DMYSQLX_UNIX_ADDR=<em class="replaceable"><code>file_name</code></em>服务器侦听 X 插件套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认为/tmp/mysqlx.sock.该值可以在服务器启动时使用系统变量设置
mysqlx_port。-DMYSQL_PROJECT_NAME=<em class="replaceable"><code>name</code></em>对于 Windows 或 macOS,要合并到项目文件名中的项目名称。-DMYSQL_TCP_PORT=<em class="replaceable"><code>port_num</code></em>服务器侦听 TCP/IP 连接的端口号。默认值为 3306。可以在服务器启动时使用该选项设置该值
--port。-DMYSQL_UNIX_ADDR=<em class="replaceable"><code>file_name</code></em>服务器侦听套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认为/tmp/mysql.sock.可以在服务器启动时使用该选项设置该值
--socket。-DOPTIMIZER_TRACE=<em class="replaceable"><code>bool</code></em>是否支持优化器跟踪。请参阅 MySQL 内部原理:跟踪优化器。-DREPRODUCIBLE_BUILD=<em class="replaceable"><code>bool</code></em>对于 Linux 系统上的构建,此选项控制是否格外小心地创建独立于构建位置和时间的构建结果。此选项默认用于
ON构建RelWithDebInfo。-DWITH_LD=<em class="replaceable"><code>string</code></em>CMake默认使用标准链接器。可以选择传入lld或mold来指定替代链接器。 模具必须是版本 2 或更新版本。此选项可用于除 Enterprise Linux 之外的基于 Linux 的系统,Enterprise Linux 始终使用 ld链接器。
笔记
以前,该选项
USE_LD_LLD可用于启用(默认)或显式禁用 Clang 的 LLVM lld链接器。在 MySQL 8.3 中,USE_LD_LLD已被删除。-DWIN_DEBUG_NO_INLINE=<em class="replaceable"><code>bool</code></em>是否在 Windows 上禁用函数内联。默认值为OFF(启用内联)。-DWITH_ANT=<em class="replaceable"><code>path_name</code></em>设置 Ant 的路径,这是构建 GCS Java 包装器时所需的。设置WITH_ANT为保存 Ant tarball 或解压存档的目录路径。当WITH_ANT未设置或使用特殊值设置时system,构建过程假定二进制文件ant存在于 中$PATH。-DWITH_ASAN=<em class="replaceable"><code>bool</code></em>是否启用AddressSanitizer,对于支持它的编译器。默认为OFF.-DWITH_ASAN_SCOPE=<em class="replaceable"><code>bool</code></em>是否启用 AddressSanitizer-fsanitize-address-use-after-scopeClang 标志以进行作用域后使用检测。默认关闭。要使用此选项,-DWITH_ASAN还必须启用。-DWITH_AUTHENTICATION_CLIENT_PLUGINS=<em class="replaceable"><code>bool</code></em>如果构建了任何相应的服务器身份验证插件,则会自动启用此选项。因此,它的值取决于其他CMake选项,不应显式设置。-DWITH_AUTHENTICATION_LDAP=<em class="replaceable"><code>bool</code></em>LDAP认证插件无法构建时是否报错:- 如果禁用此选项(默认),则在找到所需的头文件和库时构建 LDAP 插件。如果不是, CMake会显示有关它的注释。
- 如果启用此选项,则无法找到所需的头文件和库会导致 CMake 产生错误,从而阻止构建服务器。
-DWITH_AUTHENTICATION_PAM=<em class="replaceable"><code>bool</code></em>是否为包含此插件的源树构建 PAM 身份验证插件。 (请参见 第 8.4.1.5 节“PAM 可插入身份验证”。)如果指定了此选项并且无法编译插件,则构建会失败。-DWITH_AWS_SDK=<em class="replaceable"><code>path_name</code></em>Amazon Web Services 软件开发工具包的位置。-DWITH_CLIENT_PROTOCOL_TRACING=<em class="replaceable"><code>bool</code></em>是否将客户端协议追踪框架构建到客户端库中。默认情况下,此选项处于启用状态。有关编写协议跟踪客户端插件的信息,请参阅编写协议跟踪插件。
另请参阅
WITH_TEST_TRACE_PLUGIN选项。-DWITH_CURL=<em class="replaceable"><code>curl_type</code></em>图书馆的位置curl。 *curl_type*可以是system(使用系统curl库)、库的路径名curl、no|off|none禁用curl支持,或者bundled使用extra/curl/.-DWITH_DEBUG=<em class="replaceable"><code>bool</code></em>是否包含调试支持。通过配置 MySQL 的调试支持,您可以
--debug="d,parser_debug"在启动服务器时使用该选项。这会导致用于处理 SQL 语句的 Bison 解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出会写入错误日志。存储引擎的同步调试检查
InnoDB在下面定义UNIV_DEBUG,并且在使用该选项编译调试支持时可用WITH_DEBUG。当编译了调试支持时,innodb_sync_debug配置选项可用于启用或禁用InnoDB同步调试检查。启用
WITH_DEBUG还会启用调试同步。该设施用于测试和调试。编译后,调试同步在运行时默认处于禁用状态。要启用它,请 使用以下 选项启动mysqld ,其中是大于 0 的超时值。(默认值为 0,这将禁用调试同步。)成为各个同步点的默认超时。--debug-sync-timeout=<em class="replaceable"><code>N</code></em>N**NInnoDB当使用该选项编译调试支持时,可以使用存储引擎 的同步调试检查WITH_DEBUG。有关调试同步工具以及如何使用同步点的说明,请参阅 MySQL 内部:测试同步。
-DWITH_EDITLINE=<em class="replaceable"><code>value</code></em>使用 哪个libedit/库。editline允许的值为bundled(默认值) 和system。-DWITH_FIDO=<em class="replaceable"><code>fido_type</code></em>身份验证插件authentication_fido是使用 FIDO 库实现的(请参阅 第 8.4.1.12 节“FIDO 可插入身份验证”)。该WITH_FIDO选项指示 FIDO 支持的来源:bundled:使用与发行版捆绑在一起的 FIDO 库。这是默认设置。 MySQL 包含fido2版本 1.8.0。system:使用系统FIDO库。
WITH_FIDOnone如果禁用所有身份验证插件,则被 禁用(设置为 )。-DWITH_ICU={<em class="replaceable"><code>icu_type</code></em>|<em class="replaceable"><code>path_name</code></em>}MySQL 使用 International Components for Unicode (ICU) 来支持正则表达式操作。该WITH_ICU选项指示要包含的 ICU 支持类型或要使用的 ICU 安装的路径名。- *
icu_type*可以是以下值之一:bundled:使用与发行版捆绑在一起的 ICU 库。这是默认选项,也是 Windows 唯一支持的选项。system:使用系统ICU库。
- *
path_name是要使用的 ICU 安装的路径名。这比使用 的icu_type*值 更可取,system因为它可以防止 CMake 检测和使用系统上安装的较旧或不正确的 ICU 版本。 (执行相同操作的另一种允许方法是设置WITH_ICU为system并将CMAKE_PREFIX_PATH选项设置为path_name。)
- *
-DWITH_INNODB_EXTRA_DEBUG=<em class="replaceable"><code>bool</code></em>是否包含额外的 InnoDB 调试支持。启用
WITH_INNODB_EXTRA_DEBUG会开启额外的 InnoDB 调试检查。该选项只有在WITH_DEBUG启用 时才可以启用。-DWITH_JEMALLOC=<em class="replaceable"><code>bool</code></em>是否链接到-ljemalloc.如果启用,内置malloc()、calloc()、realloc()和free()例程将被禁用。默认为OFF.WITH_JEMALLOC并且WITH_TCMALLOC是互斥的。-DWITH_WIN_JEMALLOC=<em class="replaceable"><code>string</code></em>jemalloc.dll在 Windows 上,传入包含启用 jemalloc 功能的 目录的路径 。构建系统将其复制 到与和/或jemalloc.dll相同的目录, 并将其用于内存管理操作。如果找不到或未导出所需的函数,则使用标准内存函数。 INFORMATION 级别的日志消息记录是否找到并使用了 jemalloc。mysqld.exe``mysqld-debug.exe``jemalloc.dll此选项针对 Windows 官方 MySQL 二进制文件启用。
-DWITH_KEYRING_TEST=<em class="replaceable"><code>bool</code></em>是否构建插件附带的测试程序keyring_file。默认为OFF.测试文件源代码位于该plugin/keyring/keyring-test目录中。-DWITH_LIBEVENT=<em class="replaceable"><code>string</code></em>libevent使用 哪个库。允许的值为bundled(默认)和system。如果system指定并且找不到系统libevent库,则无论如何都会发生错误,并且libevent不使用捆绑的。memcached、X Plugin 和 MySQL Router
libevent需要 该库。InnoDB-DWITH_LIBWRAP=<em class="replaceable"><code>bool</code></em>是否包含libwrap(TCP 包装器)支持。-DWITH_LOCK_ORDER=<em class="replaceable"><code>bool</code></em>是否启用 LOCK_ORDER 工具。默认情况下,此选项处于禁用状态,并且服务器版本不包含任何工具。如果启用了工具,则 LOCK_ORDER 工具可用,并且可以按照第 7.9.3 节 “LOCK_ORDER 工具”中所述使用。笔记
启用该
WITH_LOCK_ORDER选项后,MySQL 构建需要 flex程序。-DWITH_LSAN=<em class="replaceable"><code>bool</code></em>是否运行 LeakSanitizer,而不运行 AddressSanitizer。默认为OFF.-DWITH_LTO=<em class="replaceable"><code>bool</code></em>是否启用链接时优化器(如果编译器支持)。默认为OFF除非FPROFILE_USE启用。-DWITH_LZ4=<em class="replaceable"><code>lz4_type</code></em>该WITH_LZ4选项指示支持来源zlib:bundled:使用lz4与发行版捆绑在一起的库。这是默认设置。system:使用系统lz4库。如果WITH_LZ4设置为此值,则不会构建lz4_decompress实用程序。在这种情况下,可以使用 系统 lz4命令来代替。
-DWITH_MECAB={disabled|system|<em class="replaceable"><code>path_name</code></em>}使用此选项编译 MeCab 解析器。如果您已将 MeCab 安装到其默认安装目录,请设置-DWITH_MECAB=system.该system选项适用于使用本机包管理实用程序从源代码或二进制文件执行的 MeCab 安装。如果您将 MeCab 安装到自定义安装目录,请指定 MeCab 安装路径,例如-DWITH_MECAB=/opt/mecab。如果该system选项不起作用,则指定 MeCab 安装路径应该在所有情况下都有效。有关相关信息,请参阅 第 14.9.9 节 “MeCab 全文解析器插件”。
-DWITH_MSAN=<em class="replaceable"><code>bool</code></em>是否启用 MemorySanitizer,对于支持它的编译器。默认关闭。为了使该选项在启用后生效,链接到 MySQL 的所有库也必须在启用该选项的情况下进行编译。
-DWITH_MSCRT_DEBUG=<em class="replaceable"><code>bool</code></em>是否启用 Visual Studio CRT 内存泄漏跟踪。默认为OFF.-DMSVC_CPPCHECK=<em class="replaceable"><code>bool</code></em>是否启用MSVC代码分析。默认为ON.-DWITH_MYSQLX=<em class="replaceable"><code>bool</code></em>是否构建支持 X Plugin。默认为ON.请参阅第 22 章,使用 MySQL 作为文档存储。-DWITH_NUMA=<em class="replaceable"><code>bool</code></em>显式设置 NUMA 内存分配策略。 CMakeWITH_NUMA根据当前平台是否支持来设置默认 值NUMA。对于不支持 NUMA 的平台, CMake 的行为如下:- 如果没有 NUMA 选项(正常情况), CMake会正常继续,仅生成此警告:NUMA 库丢失或所需版本不可用。
- 使用 时
-DWITH_NUMA=ON, CMake会中止并出现以下错误: NUMA 库丢失或所需版本不可用。
-DWITH_PACKAGE_FLAGS=<em class="replaceable"><code>bool</code></em>对于通常用于 RPM 和 Debian 软件包的标志,是否将它们添加到这些平台上的独立构建中。默认值适用ON于非调试版本。-DWITH_PROTOBUF=<em class="replaceable"><code>protobuf_type</code></em>使用哪个 Protocol Buffers 包。 *protobuf_type*可以是以下值之一:bundled:使用与发行版捆绑在一起的包。这是默认设置。 (可选)用于INSTALL_PRIV_LIBDIR修改动态 Protobuf 库目录。system:使用系统上安装的软件包。
其他值将被忽略,并回退到
bundled.-DWITH_RAPID=<em class="replaceable"><code>bool</code></em>是否构建快速开发周期插件。启用后,rapid将在包含这些插件的构建树中创建一个目录。禁用时,不会rapid在构建树中创建任何目录。默认值为ON,除非该rapid目录已从源代码树中删除,在这种情况下默认值为OFF。-DWITH_RAPIDJSON=<em class="replaceable"><code>rapidjson_type</code></em>要包含的 RapidJSON 库支持的类型。 *rapidjson_type*可以是以下值之一:bundled:使用与发行版捆绑在一起的 RapidJSON 库。这是默认设置。system:使用系统RapidJSON库。需要 1.1.0 或更高版本。
-DWITH_ROUTER=<em class="replaceable"><code>bool</code></em>是否构建MySQL Router。默认为ON.-DWITH_SSL={<em class="replaceable"><code>ssl_type</code></em>|path_name} 为了支持加密连接、随机数生成的熵以及其他与加密相关的操作,MySQL 必须使用 SSL 库构建。此选项指定要使用哪个 SSL 库。- *
ssl_type*可以是以下值之一:system:使用系统OpenSSL库。这是默认设置。 在 macOS 和 Windows 上,使用system配置 MySQL 进行构建,就像通过 *path_name*指向手动安装的 OpenSSL 库调用 CMake 一样。这是因为他们没有系统 SSL 库。在 macOS 上, brew install openssl会安装到,/usr/local/opt/openssl以便system可以找到它。在 Windows 上,它检查%ProgramFiles%/OpenSSL、%ProgramFiles%/OpenSSL-Win32、%ProgramFiles%/OpenSSL-Win64、C:/OpenSSL、C:/OpenSSL-Win32和C:/OpenSSL-Win64。yes: 这是 的同义词system。openssl<em class="replaceable"><code>version</code></em>:使用备用 OpenSSL 系统软件包,例如openssl11在 EL7 上,或openssl3(或openssl3-fips)在 EL8 上。 身份验证插件(例如 LDAP 和 Kerberos)被禁用,因为它们不支持这些替代版本的 OpenSSL。
- *
path_name是要使用的 OpenSSL 安装的路径名。这比使用该ssl_type*值 更可取,system因为它可以防止 CMake 检测和使用系统上安装的较旧或不正确的 OpenSSL 版本。 (执行相同操作的另一种允许方法是设置WITH_SSL为system并将CMAKE_PREFIX_PATH选项设置为path_name。)
有关配置 SSL 库的其他信息,请参阅 第 2.8.6 节 “配置 SSL 库支持”。
- *
-DWITH_SHOW_PARSE_TREE=<em class="replaceable"><code>bool</code></em>SHOW PARSE_TREE在服务器中 启用支持,仅用于开发和调试。不用于发布版本或在生产中受支持。-DWITH_SYSTEMD=<em class="replaceable"><code>bool</code></em>是否启用systemd 支持文件的安装。默认情况下,此选项处于禁用状态。启用后,将安装systemd支持文件,但不会安装mysqld_safe和 System V 初始化脚本等脚本 。在systemd不可用的 平台上 ,启用会导致CMakeWITH_SYSTEMD出错。当使用此选项构建服务器时,MySQL 会将所有systemd消息包含在服务器的错误日志中(请参见第 7.4.2 节“错误日志”)。
有关使用systemd 的更多信息,请参阅第 2.5.9 节 “使用 systemd 管理 MySQL 服务器”。该部分还包括有关指定选项组中其他指定选项的信息
[mysqld_safe]。由于使用systemd时未安装 mysqld_safe,因此必须以其他方式指定此类选项。-DWITH_SYSTEM_LIBS=<em class="replaceable"><code>bool</code></em>此选项充当“伞”选项,用于设置system以下任何未显式设置的CMakeWITH_CURL选项的值: ,WITH_EDITLINE,WITH_FIDO,WITH_ICU,WITH_LIBEVENT,WITH_LZ4,WITH_LZMA,WITH_PROTOBUF,WITH_RE2,WITH_SSL,WITH_ZLIB,WITH_ZSTD。-DWITH_SYSTEMD_DEBUG=<em class="replaceable"><code>bool</code></em>对于使用systemd运行 MySQL的平台, 是否生成额外的systemd 调试信息 。默认为.OFF-DWITH_TCMALLOC=<em class="replaceable"><code>bool</code></em>是否链接到-ltcmalloc.如果启用,内置malloc()、calloc()、realloc()和free()例程将被禁用。默认为OFF.WITH_TCMALLOC并且WITH_JEMALLOC是互斥的。-DWITH_TEST_TRACE_PLUGIN=<em class="replaceable"><code>bool</code></em>是否构建测试协议跟踪客户端插件(请参阅 使用测试协议跟踪插件)。默认情况下,此选项处于禁用状态。除非WITH_CLIENT_PROTOCOL_TRACING启用该选项,否则启用该选项不会产生任何效果 。如果 MySQL 配置为启用这两个选项,则libmysqlclient客户端库将使用内置的测试协议跟踪插件构建,并且所有标准 MySQL 客户端都会加载该插件。然而,即使启用了测试插件,默认情况下也没有效果。使用环境变量可以控制插件;请参阅 使用测试协议跟踪插件。笔记
如果您想使用自己的协议跟踪插件,请不要启用该
WITH_TEST_TRACE_PLUGIN选项,因为一次只能加载一个此类插件,并且尝试加载第二个插件时会发生错误。如果您已经构建了 MySQL,并启用了测试协议跟踪插件以查看其工作原理,则必须在不使用它的情况下重建 MySQL,然后才能使用自己的插件。有关编写跟踪插件的信息,请参阅 编写协议跟踪插件。
-DWITH_TSAN=<em class="replaceable"><code>bool</code></em>是否启用 ThreadSanitizer(对于支持它的编译器)。默认关闭。-DWITH_UBSAN=<em class="replaceable"><code>bool</code></em>是否为支持未定义行为清理程序的编译器启用它。默认关闭。-DWITH_UNIT_TESTS={ON|OFF}如果启用,则使用单元测试编译 MySQL。默认值是ON除非服务器没有被编译。-DWITH_UNIXODBC=<em class="replaceable"><code>1</code></em>为 Connector/ODBC 启用 unixODBC 支持。-DWITH_VALGRIND=<em class="replaceable"><code>bool</code></em>是否在 Valgrind 头文件中进行编译,这会将 Valgrind API 公开给 MySQL 代码。默认为OFF.要生成 Valgrind 感知的调试版本,
-DWITH_VALGRIND=1通常与-DWITH_DEBUG=1.请参阅 构建调试配置。-DWITH_ZLIB=<em class="replaceable"><code>zlib_type</code></em>某些功能要求服务器构建有压缩库支持,例如COMPRESS()和UNCOMPRESS()函数以及客户端/服务器协议的压缩。该WITH_ZLIB选项指示支持来源zlib:最低支持版本
zlib是 1.2.13。bundled:使用zlib与发行版捆绑在一起的库。这是默认设置。system:使用系统zlib库。如果WITH_ZLIB设置为此值,则不会构建zlib_decompress实用程序。在这种情况下,可以使用 系统openssl zlib命令来代替。
-DWITH_ZSTD=<em class="replaceable"><code>zstd_type</code></em>使用该算法的连接压缩zstd(请参见 第 6.2.8 节“连接压缩控制”)要求服务器构建有zstd库支持。该WITH_ZSTD选项指示支持来源zstd:bundled:使用zstd与发行版捆绑在一起的库。这是默认设置。system:使用系统zstd库。
编译器标志
-DCMAKE_C_FLAGS="<em class="replaceable"><code>flags</code></em>” C 编译器的标志。-DCMAKE_CXX_FLAGS="<em class="replaceable"><code>flags</code></em>” C++ 编译器的标志。-DWITH_DEFAULT_COMPILER_OPTIONS=<em class="replaceable"><code>bool</code></em>是否使用来自 的标志cmake/build_configurations/compiler_options.cmake。笔记
所有优化标志均由 MySQL 构建团队精心选择和测试。覆盖它们可能会导致意外结果,您需要自行承担风险。
-DOPTIMIZE_SANITIZER_BUILDS=<em class="replaceable"><code>bool</code></em>是否添加-O1 -fno-inline到消毒剂版本中。默认为ON.
要指定您自己的 C 和 C++ 编译器标志,对于不影响优化的标志,请使用 CMAKE_C_FLAGS和 CMAKE_CXX_FLAGSCMake 选项。
CMAKE_BUILD_TYPE当提供您自己的编译器标志时,您可能还 需要指定。
例如,要在 64 位 Linux 计算机上创建 32 位发行版本,请执行以下操作:
$> mkdir build
$> cd build
$> cmake .. -DCMAKE_C_FLAGS=-m32 \
-DCMAKE_CXX_FLAGS=-m32 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo如果设置影响优化的标志 ( ),则必须设置 和/或 选项,其中对应于值。要为默认构建类型 ( ) 指定不同的优化,请设置 和 选项。例如,要在 Linux 上使用调试符号进行编译,请执行以下操作: -O<em class="replaceable"><code>number</code></em>``CMAKE_C_FLAGS_<em class="replaceable"><code>build_type</code></em>``CMAKE_CXX_FLAGS_<em class="replaceable"><code>build_type</code></em>build_typeCMAKE_BUILD_TYPERelWithDebInfo``CMAKE_C_FLAGS_RELWITHDEBINFO``CMAKE_CXX_FLAGS_RELWITHDEBINFO``-O3
$> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"用于编译 NDB Cluster 的 CMake 选项
以下选项可在构建具有 NDB Cluster 支持的 MySQL 源时使用。
-DNDB_UTILS_LINK_DYNAMIC={ON|OFF}控制 NDB 实用程序(例如 ndb_drop_table)ndbclient是静态(OFF)还是动态(ON)链接 ;OFF(静态链接)是默认值。通常在构建这些版本时使用静态链接以避免出现问题 ,或者在安装LD_LIBRARY_PATH多个版本时使用静态链接。ndbclient此选项旨在创建 Docker 映像以及可能的其他情况,其中目标环境受到精确控制并且需要减小映像大小。-DWITH_CLASSPATH=<em class="replaceable"><code>path</code></em>设置用于构建 Java 的 MySQL NDB Cluster Connector 的类路径。默认为空。如果-DWITH_NDB_JAVA=OFF使用 该选项,则忽略该选项 。-DWITH_ERROR_INSERT={ON|OFF}在内核中启用错误注入NDB。仅用于测试;不适用于构建生产二进制文件。默认为OFF.-DWITH_NDB={ON|OFF}构建MySQL NDB集群;构建 NDB 插件和所有 NDB Cluster 程序。-DWITH_NDBAPI_EXAMPLES={ON|OFF}在storage/ndb/ndbapi-examples/.有关这些的信息, 请参阅 NDB API 示例。-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}(仅)控制ndbcluster插件是否包含在构建中;WITH_NDB自动启用此选项,因此建议您WITH_NDB改为使用。-DWITH_NDBCLUSTER={ON|OFF}构建和链接以支持 mysqldNDB中的存储引擎 。此选项已被弃用,并可能最终被删除;代替使用
WITH_NDB。-DWITH_NDBMTD={ON|OFF}构建多线程数据节点可执行文件 ndbmtd。默认为ON.-DWITH_NDB_DEBUG={ON|OFF}启用构建 NDB Cluster 二进制文件的调试版本。这是OFF默认情况。-DWITH_NDB_JAVA={ON|OFF}启用使用 Java 支持构建 NDB Cluster,包括对 ClusterJ 的支持(请参阅适用于 Java 的 MySQL NDB Cluster Connector)。此选项
ON为默认选项。如果您不希望编译具有 Java 支持的 NDB Cluster,则必须通过-DWITH_NDB_JAVA=OFF在运行 CMake时指定来显式禁用它。否则,如果找不到 Java,则构建配置将失败。-DWITH_NDB_PORT=<em class="replaceable"><code>port</code></em>导致 NDB Cluster 管理服务器(ndb_mgmd)默认使用它port。如果未设置此选项,则生成的管理服务器默认尝试使用端口 1186。-DWITH_NDB_TEST={ON|OFF}如果启用,请包含一组 NDB API 测试程序。默认为OFF.-DWITH_NDB_TLS_SEARCH_PATH=<em class="replaceable"><code>path</code></em>设置ndb_sign_keys和其他NDB程序搜索TLS证书和密钥文件的 默认路径 。Windows 平台的默认值是
$HOMEDIR/ndb-tls;对于其他平台,例如 Linux,它是$HOME/ndb-tls.