Mysql CMAKE编译参数详解

Linux平台下MySQL的安装方式主要有3种:

1、通过RPM包进行安装;

2、直接使用编译好的二进制文件进行安装;

3、下载源代码,采用自定义选项的方式安装。

使用源码安装的时候CMAKE有众多参数,下面对部分参数做一些解释说明。

常用的参数:

●  -DCMAKE_INSTALL_PREFIX:用于指定软件的安装路径,默认是安装到/usr/local/mysql目录,编译安装完之后感觉路径不合适也没关系,只要MySQL进程没有启动,随时都可以修改这个目录的名称和存储路径。

●  -DDEFAULT_CHARSET:指定MySQL服务的默认字符集,本参数的默认值为latin1.MySQL能够支持的字符集非常多,详细可以参考MySQL源码目录下,cmake/character_sets.cmake文件中SET (CHARSETS_AVAILABLE)变量的值,这一选项在MySQL服务启动时也可以通过character_set_server参数进行设置。

●  -DDEFAULT_COLLATION:指定MySQL服务的默认校对规则,本参数的默认值为latin1 swedish_ ci,这一选项在MySQL服务启动时也可以通过collation_ server参数进行设置。

●  -DENABLED_LOCAL_INFILE:足否允许从客户端本地加载数据到MySQL服务端,专用于LOAD DATA INFILE语句,默认是不允许的。

●  -DENABLED_PROFILING:是否启动query profiling,专用于SHOW PROFILE和SHOW PROFILES语句,默认是启用的。

●  -DMYSQL_DATADIR:指定MySQL数据库数据文件的存储路径,这一选项在MySQL服务启动时可以通过datadir参数进行设置。

●  -DSYSCONFDIR:指定MySQL参数文件的默认路径,这一选项可以在MySQL服务启动时通过defaults-file参数进行设置。

●  -DWITH__STORAGE_ENGINE:静态编译某存储引擎,可选的存储引擎关键字有ARCHIVEBLACKHOLEEXAMPLEFEDERATEDINNOBASEPARTITIONPERFSCHEMA,其实MySQL支持的存储引擎不止这些,但像MyISAMMERGEMEMORYCSV四种存储引擎默认就会被编译至服务端,无需指定。另外,上面列举的若干关键字也并非都是存储引擎,比如PARTITION就是指是否允许文持分区,PERFSCHEMA则是Performance_schema库。

如:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1


●  -DWITHOUT__STORAGE_ENGINE:与前面参数的功能正好相反,本参数用于指定不编译的存储引擎。例如,当不需要编译example存储引擎时,则可以指定-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1.

如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1


●  -DWITH_EXTRA_CHARSETS:指定附加支持的字符集,默认是all即全部。

 

可能用到的参数如下:

●  -DINSTALL_BINDIR:指定MySQL各项命令的存储路径,默认在CMAKE_INSTALL_PREFIX/bin目录下。

●  -DINSTALL_DOCDIR:指定MySQL文档的存储路径,默认在CMAKE_INSTALL_PREFIX/docs目录下。

●  -DINSTALL_INCLUDEDIR:指定头文件的存储路径,默认是保存于CMAKE_INSTALL_PREFIX/include目录下。

●  -DINSTALL_LIBDIR:指定链接文件的存储路径,默认是保存于CMAKE_INSTALL_PREFIX/lib目录下。

●  -DINSTALL_MANDIR:指定用户手册的存储路径,默认是保存于CMAKE_INSTALL_PREFIX/man目录下。

●  -DINSTALL_PLUGINDIR:指定Plugin的存储路径,默认是保存于CMAKE_INSTALL_PREFIX/lib/plugin目录下。

●  -DINSTALL_SBINDIR:指定服务端执行脚本的存储路径,默认是保存于CMAKE_INSTALL_PREFIX/bin目录下。

●  -DINSTALL_SCRIPTDIR:指定MySQL自带的mysql_install_db脚本的存储路径,默认是保存于CMAKE_INSTALL_PREFIX/scripts目录下。

●  -DINSTALL_SHAREDIR=share 指向aclocal/mysql.m4安装目录(prefix/share)
●  -DINSTALL_INFODIR=share/info 指向info文档存放目录(prefix/share/info)
●  -DINSTALL_SQLBENCHDIR:指定sql-bench的存储路径,默议是保存于CMAKE_INSTALL_PREFIX目录下。


●  -DINSTALL_SUPPORTFILESDIR:指定MySQL自带的附加支持类文件的存储路径,默认是保存于CMAKE_INSTALL_PREFIX/support-files目录下。

●  -DMYSQL_TCP_PORT:指定MySQL数据库提供服务的TCP/IP端口,默认为3306,这一选项可以在MySQL服务启动时通过port参数进行设置。

●  -DMYSQL_UNIX_ADDR:指定套接字文件的存储路径,默认是在/tmp/mysql.sock目录下,这一选项可以在MySQL服务启动时通过socket参数进行设置。

●  -DWITH_COMMENT:指定编译信息,这个参数在5.1及之前版本有效,对于5.5及以后版本无效,如果需要指定编译信息,可以使用-DCOMPILATION_COMMENT参数来替代。

●  -DWITH_READLINE:指定输入输出的处理方式,在5.1及之前版本无需单独处理,默认就是使用readline方式,不过进入5.5版本后,MySQL编译时默认使用libedit处理输入和输出,可能导致当前环境登录mysql命令行模式后,无法输入中文(仅针对当前编译环境,其他客户端不受影响),因此编译时需要指定其以readline方式处理。

提示:

   关于-DWITH READLINE参数,在5.6.10版本中,即使指定-DWITH_READLINE,默认仍然使用libedit处理输入输出,这种情况下即使安装成功,全程未报错,但输入中文时可能会遇到出现“Segmentation fault”错误提示,导致本地连接的mysql命令行出错中止,官方将之定义为BUG,详细情况可以参考http://bugs.mysql.com/bug.php?id=68231


●  -DWITH_SSL=system 启用ssl库支持(安全套接层)
●  -DWITH_ZLIB=system 启用libz库支持(zib、gzib相关)
●  -DWTIH_LIBWRAP=0 禁用libwrap库(实现了通用TCP包装的功能,为网络服务守护进程使用)
●  -DWITH_EMBEDDED_SERVER=1 编译嵌入式服务器支持
●  -DMYSQL_USER=mysql 指定mysql用户(默认为mysql)
●  -DWITH_DEBUG=0 禁用debug(默认为禁用)
●  -DENABLE_PROFILING=0 禁用Profiling分析(默认为开启)
●  -DWITH_COMMENT='string' 一个关于编译环境的描述性注释

以上内容来自网络,各位发现问题,欢迎一起交流指正。(QQ:63078038)

请使用浏览器的分享功能分享到微信等