mysql为我们提供了三种安装方式:二进制、rpm、源代码编译。这里我们详细讨论mysql的源代码编译安装方式。
在5.5版本之后,mysql不再提供configure编译方式,改为使用cmake编译工具,cmake工具的一个显著特点是其编译独立于源代码,即我们可以在源代码之外的目录使用cmake来编译mysql,如
[root@easy tmp]# ls -l | grep mysql drwxr-xr-x 2 root root 4096 4月 29 21:11 mysql2 drwxr-xr-x 33 7161 wheel 4096 3月 15 03:07 mysql-5.6.17 -rw-r--r-- 1 easy oinstall 32862539 4月 23 20:52 mysql-5.6.17.tar.gz drwx------ 2 easy oinstall 4096 4月 27 22:43 mysql-workbench.easy [root@easy tmp]# cd mysql2 [root@easy mysql2]# cmake ../mysql-5.6.17
这样我们便可以在不同的目录下对源文件进行多次编译,而相互不影响。
使用cmake,可以通过 -LAH来获取所有的编译选项
[root@easy mysql1]# cmake ../mysql-5.6.17 -LAH -- Running cmake version 2.6.4 -- MySQL 5.6.17 -- Packaging as: mysql-5.6.17-Linux-x86_64 -- HAVE_VISIBILITY_HIDDEN -- HAVE_VISIBILITY_HIDDEN -- HAVE_VISIBILITY_HIDDEN -- Using cmake version 2.6.4 -- Not building NDB -- Library mysqlclient depends on OSLIBS -lpthread;m;rt;dl -- Library mysqlserver depends on OSLIBS -lpthread;m;rt;crypt;dl;aio -- Configuring done -- Generating done -- Build files have been written to: /tmp/mysql1 -- Cache values // path to the executable ACLOCAL_EXECUTABLE:FILEPATH=/usr/bin/aclocal ..... // Missing description WITH_ZLIB:STRING=bundled 如果要清除编译信息,可以使用如下命令:
[root@easy mysql1]# make clean [root@easy mysql1]# rm CMakeCache.txt rm:是否删除普通文件 "CMakeCache.txt"?y
编译选项:
部分选项使用来指定编译过程中使用的可执行文件的路径,如 ACLOCAL_EXECUTABLE:FILEPATH=/usr/bin/aclocal,大家可以自己研究,这里不再獒述。
-DBUILD_CONFIG=mysql_release
使用该选项,可以促使编译器按照oracle生成官方版本的选项来编译程序,例子:
cmake -DBUILD_CONFIG=mysql_release ? -DCMAKE_BUILD_TYPE=type 该选项具有两个选择值 ? RelWithDebInfo: 默认值,启用optimizations,同时生成调试信息 ? Debug: 禁用optimizations, 同时生成调试信息,与-DWITH_DEBUG=1 具有相同的效果 ? -DCPACK_MONOLITHIC_INSTALL=bool
该选项影响make package操作的行为,如果设置为真,生成单个文件,否则生成多个文件。默认是生成多个文件
The CMAKE_INSTALL_PREFIX option indicates the base installation directory. Other options with
names of the form INSTALL_xxx that indicate component locations are interpreted relative to the
prefix and their values are relative pathnames. Their values should not include the prefix.
?
-DCMAKE_INSTALL_PREFIX=dir_name
该选项指定了mysql的安装目录,除了在编译时指定此值,我们也可月使用--basedir在mysql启动时设置基准目录。在编译时,INSTALL_XXX格式的选项是相对于PREFIX的相对路径,这是需要注意的一点
?
-DINSTALL_BINDIR=dir_name
bin文件的目录
?
-DINSTALL_LAYOUT=name
使用何种已经预设好的文件布局,我们可以在这些的布局的基础上,再手工设定某些目录的位置
? STANDALONE: Same layout as used for .tar.gz and .zip packages. This is the default.
? RPM: Layout similar to RPM packages.
? SVR4: Solaris package layout.
? DEB: DEB package layout (experimental).
如下
shell> cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
?
-DINSTALL_MYSQLTESTDIR=dir_name
Where to install the mysql-test directory. As of MySQL 5.6.12, to suppress installation of this
directory, explicitly set the option to the empty value (-DINSTALL_MYSQLTESTDIR=).
?
-DINSTALL_SQLBENCHDIR=dir_name
Where to install the sql-bench directory. To suppress installation of this directory, explicitly set the
option to the empty value (-DINSTALL_SQLBENCHDIR=).
?
-DMYSQL_DATADIR=dir_name
指定数据文件的位置,也可以安装后使用--datadir来设置
?
-DODBC_INCLUDES=dir_name
The location of the ODBC includes directory, and may be used while configuring Connector/ODBC.(配置odbc时可能会使用)
?
-DODBC_LIB_DIR=dir_name
The location of the ODBC library directory, and may be used while configuri