从源代码构建MySQL/ MySQL源配置选项

第4章MySQL源配置选项

CMake程序在如何配置MySQL源代码发行版方面提供了很大的控制。控件上的选项通常可以完成此操作CMake命令行。有关支持的选项的信息CMake,在顶级源目录中运行以下命令之一:

cmake。-LH ccmake。

你也可以影响CMake使用某些环境变量。看到环境变量

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

许多选项配置编译时默认值,这些默认值可以在服务器启动时被覆盖。例如,CMAKE_INSTALL_PREFIXMYSQL_TCP_PORT,MYSQL_UNIX_ADDR选项,这些选项配置默认的安装基础目录位置、TCP/IP端口号和Unix套接字文件,可以在服务器启动时使用——basedir——港口,——套接字选项mysqld.在适用的情况下,配置选项描述指示了相应的mysqld启动选项。

以下部分提供关于CMake选项。

一般选择

  • -DBUILD_CONFIG = mysql_release

    该选项使用与Oracle为官方MySQL发行版生成二进制发行版使用的相同构建选项配置源发行版。

  • -DCMAKE_BUILD_TYPE =类型

    要生成的构建类型:

    • RelWithDebInfo:开启优化并生成调试信息。这是默认的MySQL构建类型。

    • 调试:关闭优化,并生成调试信息。的情况下也使用此构建类型WITH_DEBUG选项已启用。也就是说,-DWITH_DEBUG = 1有相同的效果-DCMAKE_BUILD_TYPE =调试

  • -DCPACK_MONOLITHIC_INSTALL =保龄球

    该选项将影响使包操作可生成多个安装包文件或单个安装包文件。如果禁用,该操作将生成多个安装包文件,如果您只想安装完整MySQL安装的一个子集,这可能很有用。如果启用,它将生成一个用于安装所有内容的文件。

安装布局选项

CMAKE_INSTALL_PREFIXOption表示基本安装目录。具有表单名称的其他选项INSTALL_xxx指示组件位置是相对于前缀解释的,它们的值是相对路径名。它们的值不应该包含前缀。

  • -DCMAKE_INSTALL_PREFIX =dir_name

    安装基目录。

    方法可以在服务器启动时设置此值——basedir选择。

  • -DINSTALL_BINDIR =dir_name

    安装用户程序的位置。

  • -DINSTALL_DOCDIR =dir_name

    安装文档的位置。10bet官方网站

  • -DINSTALL_DOCREADMEDIR =dir_name

    安装地点自述文件。

  • -DINSTALL_INCLUDEDIR =dir_name

    安装头文件的位置。

  • -DINSTALL_INFODIR =dir_name

    在哪里安装信息文件。

  • -DINSTALL_LAYOUT =的名字

    选择一个预定义的安装布局:

    • 独立的:与for相同的布局gz而且. zip包。这是默认设置。

    • RPM:类似RPM包的布局。

    • SVR4: Solaris软件包布局。

    • 黛比: DEB包布局(试验性)。

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

    cmake。-DINSTALL_LAYOUT = SVR4 -DMYSQL_DATADIR = / var / mysql /数据

    INSTALL_LAYOUT的默认值secure_file_privkeyring_encrypted_file_data,keyring_file_data系统变量。这些变量的描述见服务器系统变量,Keyring系统变量

  • -DINSTALL_LIBDIR =dir_name

    安装库文件的位置。

  • -DINSTALL_MANDIR =dir_name

    安装手册页的位置。

  • -DINSTALL_MYSQLKEYRINGDIR =dir_path

    控件的位置使用的默认目录keyring_file插件数据文件。默认值是特定于平台的,取决于INSTALL_LAYOUTCMake选择;的描述keyring_file_data系统变量服务器系统变量

    此选项在MySQL 5.7.11中添加。

  • -DINSTALL_MYSQLSHAREDIR =dir_name

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

  • -DINSTALL_MYSQLTESTDIR =dir_name

    在何处安装mysql-test目录中。若要禁止安装此目录,请显式将该选项设置为空值(-DINSTALL_MYSQLTESTDIR =).

  • -DINSTALL_PKGCONFIGDIR =dir_name

    要安装的目录mysqlclient.pc文件供pkg-config.默认值为INSTALL_LIBDIR / pkgconfig,除非INSTALL_LIBDIR结尾/ mysql在这种情况下,它会先被移除。

  • -DINSTALL_PLUGINDIR =dir_name

    插件目录的位置。

    方法可以在服务器启动时设置此值——plugin_dir选择。

  • -DINSTALL_SBINDIR =dir_name

    在何处安装mysqld服务器。

  • -DINSTALL_SCRIPTDIR =dir_name

    安装地点mysql_install_db

  • -DINSTALL_SECURE_FILE_PRIVDIR =dir_name

    的默认值secure_file_priv系统变量。默认值是特定于平台的,取决于INSTALL_LAYOUTCMake选择;的描述secure_file_priv系统变量服务器系统变量

    的值libmysqld嵌入式服务器,使用INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR

  • -DINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR =dir_name

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

    请注意

    libmysqld从MySQL 5.7.19起已弃用嵌入式服务器库;我希望在MySQL 8.0中删除它。

  • -DINSTALL_SHAREDIR =dir_name

    安装地点aclocal / mysql.m4

  • -DINSTALL_SUPPORTFILESDIR =dir_name

    在哪里安装额外的支持文件。

  • -DMYSQL_DATADIR =dir_name

    MySQL数据目录的位置。

    方法可以在服务器启动时设置此值——datadir选择。

  • -DODBC_INCLUDES =dir_name

    ODBC的位置包括目录,可以在配置Connector/ODBC时使用。

  • -DODBC_LIB_DIR =dir_name

    ODBC库目录的位置,可以在配置Connector/ODBC时使用。

  • -DSYSCONFDIR =dir_name

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

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

  • -DSYSTEMD_PID_DIR =dir_name

    当MySQL由systemd管理时,在其中创建PID文件的目录名称。默认为/var/run/mysqld;这可能会根据INSTALL_LAYOUT价值。

    此选项将被忽略,除非WITH_SYSTEMD启用。

  • -DSYSTEMD_SERVICE_NAME =的名字

    当systemd管理MySQL时使用的MySQL服务的名称。默认为mysqld;这可能会根据INSTALL_LAYOUT价值。

    此选项将被忽略,除非WITH_SYSTEMD启用。

  • -DTMPDIR =dir_name

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

存储引擎选项

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

InnoDBMyISAM合并内存,CSV引擎是必需的(总是编译到服务器中),不需要显式安装。

若要将存储引擎静态编译到服务器中,请使用-DWITH_引擎_STORAGE_ENGINE = 1.一些允许的引擎值是存档黑洞例子联邦NDBNDBCLUSTERNDB),分区(分区支持)。例子:

-DWITH_ARCHIVE_STORAGE_ENGINE = 1 -DWITH_BLACKHOLE_STORAGE_ENGINE = 1
请注意

WITH_NDBCLUSTER_STORAGE_ENGINE仅在使用NDB集群源构建NDB集群时支持。它不能用于在其他MySQL源树或发行版中启用集群支持。在NDB集群源分发版中,默认是启用的。看到在Linux上从Source构建NDB集群,在Windows上从Source编译和安装NDB集群,以查询更多资料。

请注意

在没有性能模式支持的情况下无法进行编译。如果希望在编译时不使用特定类型的插装,可以使用以下方法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选择。

若要从构建中排除存储引擎,请使用-DWITH_引擎_STORAGE_ENGINE = 0.例子:

-dwith_example_storage_engine =0 -dwith_federated_storage_engine =0 -dwith_partition_storage_engine =0

也可以将存储引擎排除在使用的构建之外-DWITHOUT_引擎_STORAGE_ENGINE = 1(但-DWITH_引擎_STORAGE_ENGINE = 0者优先)。例子:

-dwithout_example_storage_engine =1 -dwithout_federated_storage_engine =1 -dwithout_partition_storage_engine =1

如果既不-DWITH_引擎_STORAGE_ENGINE也不-DWITHOUT_引擎_STORAGE_ENGINE为给定的存储引擎指定,则将该引擎构建为共享模块,如果不能将其构建为共享模块则排除该引擎。

功能选项

  • -DCOMPILATION_COMMENT =字符串

    关于编译环境的描述性注释。

  • -DDEFAULT_CHARSET =charset_name

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

    charset_name可能是其中之一二进制armscii8美国信息交换标准代码繁体cp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb2312gbkgeostd8希腊希伯来语hp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2里头use utf8utf8mb4utf16utf16leutf32.中列出了允许的字符集cmake / character_sets.cmake的值CHARSETS_AVAILABLE

    方法可以在服务器启动时设置此值——character_set_server选择。

  • -DDEFAULT_COLLATION =collation_name

    服务器排序。MySQL默认使用latin1_swedish_ci.使用显示排序语句以确定对每个字符集可用的排序规则。

    方法可以在服务器启动时设置此值——collation_server选择。

  • -DDISABLE_PSI_COND =保龄球

    是否排除性能模式条件插装。默认为(包括)。

  • -DDISABLE_PSI_FILE =保龄球

    是否排除性能架构文件检测。默认为(包括)。

  • -DDISABLE_PSI_IDLE =保龄球

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

  • -DDISABLE_PSI_MEMORY =保龄球

    是否排除性能架构内存插装。默认为(包括)。

  • -DDISABLE_PSI_METADATA =保龄球

    是否排除性能架构元数据插装。默认为(包括)。

  • -DDISABLE_PSI_MUTEX =保龄球

    是否排除性能模式互斥锁插装。默认为(包括)。

  • -DDISABLE_PSI_RWLOCK =保龄球

    是否排除性能架构rwlock工具。默认为(包括)。

  • -DDISABLE_PSI_SOCKET =保龄球

    是否排除性能模式套接字插装。默认为(包括)。

  • -DDISABLE_PSI_SP =保龄球

    是否排除性能模式存储程序插装。默认为(包括)。

  • -DDISABLE_PSI_STAGE =保龄球

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

  • -DDISABLE_PSI_STATEMENT =保龄球

    是否排除性能架构语句插装。默认为(包括)。

  • -DDISABLE_PSI_STATEMENT_DIGEST =保龄球

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

  • -DDISABLE_PSI_TABLE =保龄球

    是否排除性能模式表检测。默认为(包括)。

  • -DDISABLE_PSI_PS =保龄球

    排除性能模式预置语句实例插装。默认为(包括)。

  • -DDISABLE_PSI_THREAD =保龄球

    排除性能模式线程检测。默认为(包括)。

    只在不使用任何工具的情况下构建时禁用线程,因为其他工具对线程有依赖关系。

  • -DDISABLE_PSI_TRANSACTION =保龄球

    排除性能模式事务检测。默认为(包括)。

  • -DDOWNLOAD_BOOST =保龄球

    是否下载Boost库。默认为

    看到WITH_BOOST选项,以了解关于使用Boost的更多讨论。

  • -DDOWNLOAD_BOOST_TIMEOUT =

    下载Boost库的超时时间(以秒为单位)。缺省值是600秒。

    看到WITH_BOOST选项,以了解关于使用Boost的更多讨论。

  • -DENABLE_10bet手机中文版DOWNLOADS =保龄球

    是否下载可选文件。例如,启用此选项后,CMake10bet手机中文版下载测试套件用于运行单元测试的谷歌测试分发版。

  • -DENABLE_DTRACE =保龄球

    是否包含对DTrace探测的支持。有关DTrace的信息,请点击wee使用DTrace跟踪mysqld

    此选项已弃用,因为对DTrace的支持在MySQL 5.7中已弃用,在MySQL 8.0中已删除。

  • -DENABLE_GCOV =保龄球

    是否包含gcov支持(仅限Linux)。

  • -DENABLE_GPROF =保龄球

    是否启用gprof(只针对优化的Linux版本)。

  • -DENABLED_LOCAL_INFILE =保龄球

    此选项控制编译后的默认值当地的MySQL客户端库的功能。因此,没有做出明确安排的客户就有了当地的功能已禁用或已启用ENABLED_LOCAL_INFILE设置在MySQL构建时指定。

    默认情况下,MySQL二进制发行版中的客户端库是用ENABLED_LOCAL_INFILE启用。如果从源代码编译MySQL,则配置为ENABLED_LOCAL_INFILE根据没有明确安排的客户端是否应该启用或禁用当地的分别禁用或启用功能。

    ENABLED_LOCAL_INFILE控制客户端的默认值当地的能力。对于服务器,local_infile系统变量控制服务器端当地的能力。显式地使服务器拒绝或允许本地加载数据语句(无论在构建时或运行时如何配置客户端程序和库)开始mysqldlocal_infile分别为禁用或启用。local_infile也可以在运行时设置。看到本地加载数据的安全考虑

  • -DENABLED_PROFILING =保龄球

    是否启用查询分析代码显示配置文件而且显示配置文件语句)。

  • -DFORCE_UNSUPPORTED_COMPILER =保龄球

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

  • -DIGNORE_AIO_CHECK =保龄球

    如果-DBUILD_CONFIG = mysql_release选项在Linux上给出libaio库在默认情况下必须被链接。如果你没有libaio或者不想安装它,您可以通过指定来抑制对它的检查-DIGNORE_AIO_CHECK = 1

  • -DMAX_INDEXES =全国矿工工会

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

  • -DMYSQL_MAINTAINER_MODE =保龄球

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

  • -DMUTEX_TYPE =类型

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

    • 事件:使用事件互斥锁。这是默认值和原始值InnoDB互斥对象的实现。

    • sys:在UNIX系统上使用POSIX互斥锁。使用CRITICAL_SECTION对象在Windows上,如果可用。

    • futex:使用Linux的futexes代替条件变量来调度等待线程。

  • -DMYSQLX_TCP_PORT =port_num

    X Plugin监听TCP/IP连接的端口号。默认值为33060。

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

  • -DMYSQLX_UNIX_ADDR =file_name

    Unix套接字文件路径,服务器在其上监听X Plugin套接字连接。这必须是一个绝对路径名。默认为/ tmp / mysqlx.sock

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

  • -DMYSQL_PROJECT_NAME =的名字

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

  • -DMYSQL_TCP_PORT =port_num

    服务器监听TCP/IP连接的端口号。默认值是3306。

    方法可以在服务器启动时设置此值——港口选择。

  • -DMYSQL_UNIX_ADDR =file_name

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

    方法可以在服务器启动时设置此值——套接字选择。

  • -DOPTIMIZER_TRACE =保龄球

    是否支持优化器跟踪。看到MySQL内部:跟踪优化器

  • -DREPRODUCIBLE_BUILD =保龄球

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

    此选项在MySQL 5.7.19中添加。

  • -DWIN_DEBUG_NO_INLINE =保龄球

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

  • -DWITH_ASAN =保龄球

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

  • -DWITH_ASAN_SCOPE =保龄球

    是否启用AddressSanitizer-fsanitize-address-use-after-scope瞄准镜后检测使用的Clang标志。默认是关闭的。要使用这个选项,-DWITH_ASAN也必须启用。

  • -DWITH_AUTHENTICATION_LDAP =保龄球

    是否在无法构建LDAP认证插件时报错:

    • 如果禁用此选项(默认),则在找到所需的头文件和库时构建LDAP插件。如果不是,CMake显示关于它的注释。

    • 如果启用此选项,将导致无法找到所需的头文件和库CMake产生错误,阻止构建服务器。

    有关LDAP身份验证的信息,请参见LDAP可插入认证.此选项在MySQL 5.7.19中添加。

  • -DWITH_AUTHENTICATION_PAM =保龄球

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

  • -DWITH_AWS_SDK =path_name

    Amazon Web Services软件开发工具包的位置。

    此选项在MySQL 5.7.19中添加。

  • -DWITH_BOOST =path_name

    构建MySQL需要Boost库。这些CMake选项允许控制库的源位置,以及是否自动下载:

    • -DWITH_BOOST =path_name指定Boost库目录位置。属性还可以指定Boost位置BOOST_ROOTWITH_BOOST环境变量。

      从MySQL 5.7.11开始,-DWITH_BOOST =系统表示在标准位置的编译主机上安装了正确版本的Boost。在这种情况下,使用的是已安装的Boost版本,而不是MySQL源代码发行版中包含的任何版本。

    • -DDOWNLOAD_BOOST =保龄球指定如果不在指定位置,是否下载Boost源代码。默认为

    • -DDOWNLOAD_BOOST_TIMEOUT =下载Boost库的超时时间(以秒为单位)。缺省值是600秒。

    例如,如果您通常在构建MySQL时将对象输出放在梁式引线掐你可以用Boost像这样构建:

    Mkdir BLD CD BLD cmake ..在-DWITH_BOOST -DDOWNLOAD_BOOST = = $ HOME / my_boost

    这将导致Boost被下载到my_boost目录下的目录。如果已经有所需的Boost版本,则不进行下载。如果所需的Boost版本发生变化,则下载更新的版本。

    如果Boost已经安装在本地,并且编译器自己查找Boost头文件,则可能没有必要指定上述内容CMake选项。但是,如果MySQL所需的Boost版本发生了变化,而本地安装的版本没有升级,则可能会出现构建问题。使用CMake选项应该会给您一个成功的构建。

    使用上述允许Boost下载到指定位置的设置,当所需的Boost版本发生更改时,您需要删除梁式引线掐文件夹,重新创建它,并执行cmake一步了。否则,新的Boost版本可能无法下载,编译可能会失败。

  • -DWITH_CLIENT_PROTOCOL_TRACING =保龄球

    是否将客户端协议跟踪框架构建到客户端库中。缺省情况下,启用此选项。

    有关编写协议跟踪客户端插件的信息,请参见正在编写协议跟踪插件

    参见WITH_TEST_TRACE_PLUGIN选择。

  • -DWITH_CURL =curl_type

    的位置旋度图书馆。curl_type可以系统(使用系统旋度类的路径名)或旋度图书馆。

    此选项在MySQL 5.7.19中添加。

  • -DWITH_DEBUG =保龄球

    是否包含调试支持。

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

    的同步调试检查InnoDB存储引擎的定义如下UNIV_DEBUG方法编译调试支持时可用WITH_DEBUG选择。当在中编译调试支持时,innodb_sync_debug配置选项可用于启用或禁用InnoDB同步调试检查。

    截至MySQL 5.7.18,启用WITH_DEBUG还启用了调试同步。有关“调试同步”功能以及如何使用同步点的说明,请参见MySQL内部:测试同步

  • -DWITH_DEFAULT_FEATURE_SET =保龄球

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

  • -DWITH_EDITLINE =价值

    哪一个libedit/editline要使用的库。允许的值为捆绑(默认值)和系统

    WITH_EDITLINE替换WITH_LIBEDIT,已被删除。

  • -DWITH_EMBEDDED_SERVER =保龄球

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

    请注意

    libmysqld嵌入式服务器库从MySQL 5.7.17起已弃用,在MySQL 8.0中已被移除。

  • -DWITH_EMBEDDED_SHARED_LIBRARY =保龄球

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

    请注意

    libmysqld嵌入式服务器库从MySQL 5.7.17起已弃用,在MySQL 8.0中已被移除。

  • -DWITH_EXTRA_CHARSETS =的名字

    需要包括哪些额外字符集:

    • 所有:所有字符集。这是默认设置。

    • 复杂的:复杂字符集。

    • 没有一个:没有额外的字符集。

  • -DWITH_GMOCK =path_name

    googlemock分发版的路径,用于谷歌基于测试的单元测试。选项值是分发Zip文件的路径。或者,设置WITH_GMOCK环境变量的路径名。它也可以使用-DENABLE_10bet手机中文版DOWNLOADS = 1,这样的话CMake10bet手机中文版从GitHub下载发行版。

    如果您构建MySQL时不使用谷歌基于测试的单元测试(通过配置不使用WITH_GMOCK),CMake显示一条消息,指示如何下载它。

  • -DWITH_INNODB_EXTRA_DEBUG =保龄球

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

    启用WITH_INNODB_EXTRA_DEBUG打开额外的InnoDB调试检查。此选项只能在以下情况下启用WITH_DEBUG启用。

  • -DWITH_INNODB_MEMCACHED =保龄球

    是否生成memcached共享库(libmemcached.so而且innodb_engine.so).

  • -DWITH_KEYRING_TEST =保龄球

    是否构建伴随的测试程序keyring_file插件。默认为.测试文件的源代码位于插件/密匙环/ keyring-test目录中。

    此选项在MySQL 5.7.11中添加。

  • -DWITH_LDAP =价值

    只供内部使用。此选项在MySQL 5.7.29中添加。

  • -DWITH_LIBEVENT =字符串

    哪一个libevent要使用的库。允许的值为捆绑(默认),系统.在MySQL 5.7.31之前,如果指定系统,系统libevent库存在时使用,否则会发生错误。在MySQL 5.7.31及以后版本中,如果系统是指定的,而没有系统libevent库时,无论如何都会发生错误,而绑定的libevent不使用。

    libevent库需要由InnoDBmemcached和X Plugin。

  • -DWITH_LIBWRAP =保龄球

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

  • -DWITH_LZ4 =lz4_type

    WITH_LZ4Option表示的源zlib支持:

    • 捆绑:使用LZ4库与发行版绑定。这是默认设置。

    • 系统:使用系统LZ4图书馆。如果WITH_LZ4设置为这个值,lz4_decompress没有构建实用程序。在本例中,是系统lz4可以使用Command代替。

  • -DWITH_MECAB ={禁用系统| |path_name

    使用此选项编译MeCab解析器。如果已将MeCab安装到默认安装目录,请设置-DWITH_MECAB =系统.的系统选项适用于使用本机包管理实用程序从源文件或从二进制文件执行的MeCab安装。如果您将MeCab安装到自定义安装目录,请指定MeCab安装路径。例如,-DWITH_MECAB = / opt / mecab.如果系统选项无效,指定MeCab安装路径应该在所有情况下都有效。

    相关信息请参见MeCab全文解析器插件

  • -DWITH_MSAN =保龄球

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

    如果启用了该选项,那么所有链接到MySQL的库也必须在启用该选项的情况下进行编译。

  • -DWITH_MSCRT_DEBUG =保龄球

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

  • -DWITH_NUMA =保龄球

    显式设置NUMA内存分配策略。CMake设置默认值WITH_NUMA值,根据当前平台是否具有NUMA支持。对于没有NUMA支持的平台,CMake行为如下:

    • 如果没有NUMA选项(通常情况),CMake正常继续,只产生这样的警告:NUMA库丢失或所需版本不可用

    • -DWITH_NUMA =对CMakeNUMA库丢失或所需版本不可用

    此选项在MySQL 5.7.17中添加。

  • -DWITH_PROTOBUF =protobuf_type

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

    • 捆绑:使用发行版附带的软件包。这是默认设置。

    • 系统:使用系统自带的安装包。

    其他值将被忽略,并返回到捆绑

    此选项在MySQL 5.7.12中添加。

  • -DWITH_RAPID =保龄球

    是否构建快速开发周期插件。当启用时,快速目录在包含这些插件的构建树中创建。当禁用时,no快速目录在构建树中创建。默认为,除非快速目录从源树中删除,在这种情况下,默认值变为.此选项在MySQL 5.7.12中添加。

  • -DWITH_SASL =价值

    只供内部使用。此选项在MySQL 5.7.29中添加。

  • -DWITH_SSL = {ssl_type|path_name

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

    • ssl_type可以是以下值之一:

      • 是的:如果存在,则使用系统OpenSSL库,否则使用与发行版绑定的库。

      • 捆绑:使用与发行版捆绑的SSL库。这是MySQL 5.7.28之前的默认设置。从5.7.28开始,这不再是一个允许的值,默认值是系统

      • 系统:使用系统OpenSSL库。这是MySQL 5.7.28的默认设置。

    • path_name是要使用的OpenSSL安装的路径名称。这可能比使用ssl_type的价值系统因为它可以防止CMake检测并使用系统上安装的较旧或不正确的OpenSSL版本。(做同样事情的另一种允许的方法是设置WITH_SSL系统并设置CMAKE_PREFIX_PATH选项path_name)。

    有关配置SSL库的其他信息,请参见配置SSL库支持

  • -DWITH_SYSTEMD =保龄球

    是否启用安装systemd支持文件。缺省情况下,禁用此选项。启用时,将安装systemd支持文件,以及mysqld_safe以及System V初始化脚本未安装。在systemd不可用的平台上,启用WITH_SYSTEMD的错误CMake

    有关使用systemd的更多信息,请参见使用systemd管理MySQL服务器.该部分还包括关于指定先前在(mysqld_safe)选项组。因为mysqld_safe在使用systemd时不安装,因此必须以另一种方式指定这些选项。

  • -DWITH_TEST_TRACE_PLUGIN =保龄球

    是否构建测试协议跟踪客户端插件(参见使用测试协议跟踪插件).缺省情况下,禁用此选项。启用此选项不会产生任何效果,除非WITH_CLIENT_PROTOCOL_TRACING选项已启用。如果MySQL配置时启用了这两个选项,则libmysqlclient客户端库是用内置的测试协议跟踪插件构建的,所有标准的MySQL客户端都会加载这个插件。然而,即使启用了test插件,默认情况下也没有任何效果。使用环境变量提供对插件的控制;看到使用测试协议跟踪插件

    请注意

    启用WITH_TEST_TRACE_PLUGIN选项,因为每次只能加载一个这样的插件,如果试图加载第二个插件,则会出现错误。如果您已经在构建MySQL时启用了测试协议跟踪插件,以查看它是如何工作的,那么在使用自己的插件之前,必须在不使用它的情况下重新构建MySQL。

    有关编写跟踪插件的信息,请参见正在编写协议跟踪插件

  • -DWITH_UBSAN =保龄球

    是否为支持未定义行为杀毒器的编译器启用该杀毒器。默认是关闭的。

  • -DWITH_UNIT_TESTS ={|关闭}

    如果启用,则使用单元测试编译MySQL。默认值是ON,除非服务器没有被编译。

  • -DWITH_UNIXODBC =1

    为Connector/ODBC启用unixODBC支持。

  • -DWITH_VALGRIND =保龄球

    是否在Valgrind头文件中编译,这将向MySQL代码公开Valgrind API。默认为

    要生成支持valgrind的调试版本,-DWITH_VALGRIND = 1通常与-DWITH_DEBUG = 1.看到构建调试配置

  • -DWITH_ZLIB =zlib_type

    某些特性要求服务器构建时带有压缩库支持,例如压缩()而且解压()函数,以及客户机/服务器协议的压缩。的WITH_ZLIBOption表示的源zlib支持:

    • 捆绑:使用zlib库与发行版绑定。这是默认设置。

    • 系统:使用系统zlib图书馆。

编译器标志

  • -DCMAKE_C_FLAGS = "旗帜

    C编译器的标志。

  • -DCMAKE_CXX_FLAGS = "旗帜

    c++编译器的标志。

  • -DWITH_DEFAULT_COMPILER_OPTIONS =保龄球

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

    请注意

    所有优化标志都是由MySQL构建团队仔细选择和测试的。忽略它们可能会导致意想不到的结果,这样做的风险由您自己承担。

  • -DSUNPRO_CXX_LIBRARY = "lib_name

    启用链接针对libCstd而不是stlport4在Solaris 10或更高版本上。这只适用于客户端代码,因为服务器依赖于c++ 98。

要指定自己的C和c++编译器标志,对于不影响优化的标志,请使用CMAKE_C_FLAGS而且CMAKE_CXX_FLAGSCMake选项。

在提供自己的编译器标志时,您可能希望指定CMAKE_BUILD_TYPE

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

Mkdir BLD CD BLD cmake ..-DCMAKE_C_FLAGS=-m32 \ -DCMAKE_CXX_FLAGS=-m32 \ -DCMAKE_BUILD_TYPE=RelWithDebInfo

如果你设置了影响优化的标志(- o数量),你必须设置CMAKE_C_FLAGS_build_type和/或CMAKE_CXX_FLAGS_build_type选项,build_type对应于CMAKE_BUILD_TYPE价值。要为默认构建类型指定不同的优化(RelWithDebInfo)设置CMAKE_C_FLAGS_RELWITHDEBINFO而且CMAKE_CXX_FLAGS_RELWITHDEBINFO选项。例如,在Linux上编译o3对于调试符号,可以这样做:

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

CMake NDB集群编译选项

在使用NDB集群源构建NDB集群时,可以使用以下选项:当使用MySQL 5.6服务器树中的源代码时,它们目前不被支持。

  • -DMEMCACHED_HOME =dir_name

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

    构建时必须不设置此选项ndbmemcache使用绑定的memcached源(WITH_BUNDLED_MEMCACHED选项);换句话说,默认情况下使用绑定的源代码)。

    而额外的CMake选项,例如SASL授权和提供dtrace支持在编译时可用memcached的外部源中,这些选项目前没有启用memcached与NDB集群绑定的源代码。

  • -DWITH_BUNDLED_LIBEVENT ={|关闭}

    使用libevent在构建NDB集群时包含在NDB集群源代码中ndbmemcached支持。默认启用。导致系统的libevent被代替。

  • -DWITH_BUNDLED_MEMCACHED ={|关闭}

    构建包含在NDB Cluster源树中的memcached源,然后在构建ndbmemcache引擎。在这种情况下,制作安装地方,memcached安装中的二进制文件箱子目录,以及ndbmemcache引擎共享库文件ndb_engine.so在安装过程中自由目录中。

    该选项默认为ON。

  • -DWITH_CLASSPATH =路径

    设置用于构建Java NDB集群连接器的类路径。默认为空。如果发生以下情况,则忽略此选项-DWITH_NDB_JAVA =了使用。

  • -DWITH_ERROR_INSERT ={|关闭}

    控件中启用错误注入NDB内核。只作测试用途;不打算用于构建生产二进制文件。默认为

  • -DWITH_NDBAPI_EXAMPLES ={|关闭}

    构建API示例程序存储/ ndb / ndbapi-examples /

  • -DWITH_NDBAPI_EXAMPLES_DEFAULT ={|关闭}

    构建API示例程序存储/ ndb / ndbapi-examples /.使用此选项可避免CMake忽略WITH_NDBAPI_EXAMPLES.在NDB 7.5.25和7.6.21中新增。

  • -DWITH_NDBCLUSTER_STORAGE_ENGINE ={|关闭}

    的构建和链接支持NDBNDBCLUSTER)储存发动机在mysqld.默认为

  • -DWITH_NDBCLUSTER ={|关闭}

    这是一个别名WITH_NDBCLUSTER_STORAGE_ENGINE

  • -DWITH_NDBMTD ={|关闭}

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

  • -DWITH_NDB_BINLOG ={|关闭}

    中的默认启用二进制日志记录mysqld使用此选项构建。默认为ON。

  • -DWITH_NDB_DEBUG ={|关闭}

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

  • -DWITH_NDB_JAVA ={|关闭}

    启用使用Java支持构建NDB集群,包括ClusterJ

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

  • -DWITH_NDB_PORT =港口

    NDB集群管理服务器(ndb_mgmd)就是用来使用这个的港口默认情况下。如果未设置此选项,则生成的管理服务器默认尝试使用端口1186。

  • -DWITH_NDB_TEST ={|关闭}

    如果启用,则包含一组NDB API测试程序。默认为OFF。