cmake的重要特性之一是其獨立於源碼(out-of-source)的編譯功能,即編譯工作可以在另一個指定的目錄中而非源碼目錄中進行,這可以保證源碼目錄不受任何一次編譯的影響,因此在同一個源碼樹上可以進行多次不同的編譯,如針對於不同平臺編譯。
編譯安裝cmake
- # tar xf cmake-2.8.8.tar.gz
- # cd cmake-2.8.8
- # ./configure
- # make
- # make install
編譯安裝mysql-5.5.28a
cmake指定編譯選項的方式不同於make,其實現方式對比如下:
./configure對應的是 cmake .
./configure --help 對應的是 cmake . -LH 或者是 ccmake .
創建mysql用戶與組
- # groupadd -r mysql
- # useradd -g mysql -r -s /sbin/nologin mysql
準備mysql的數據目錄
- # fdisk /dev/sda -----創建一個新分區類型爲8e,創建分區過程就不再給出了
- 創建一個邏輯卷
- # partprobe /dev/sda
- # pvcreate /dev/sda5
- # vgcreate myvg /dev/sda5
- # lvcreate -L 10G -n mydata myvg
- # mke2fs -j /dev/myvg/mydata
掛載選項設置
- # vim /etc/fstab
- 添加內容如下
- /dev/myvg/mydata /mydata ext3 defaults 0 0
- 保存退出
- # mount -a
數據目錄配置
- # cd /mydata
- # mkdir data
- # chown -R mysql.mysql data
編譯安裝
- # tar xf mysql-5.5.28.tar.gz
- # cd mysql-5.5.28
- # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
- -DMYSQL_DATADIR=/mydata/data \
- -DSYSCONFDIR=/etc \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
- -DWITH_READLINE=1 \
- -DWITH_SSL=system \
- -DWITH_ZLIB=system \
- -DWITH_LIBWRAP=0 \
- -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
- -DDEFAULT_CHARSET=utf8 \
- -DDEFAULT_COLLATION=utf8_general_ci
- # make
- # make install
指定安裝文件的安裝路徑時常用的選項
- -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ----指定殘可安裝路徑(默認的就是/usr/local/mysql)
- -DMYSQL_DATADIR=/data/mysql ----mysql的數據文件路徑
- -DSYSCONFDIR=/etc -----配置文件路徑
編譯過程中啓用其他存儲引擎時指令介紹
- -DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用INNOBASE存儲引擎
- -DWITH_ARCHIVE_STORAGE_ENGINE=1 -----常應用於日誌記錄和聚合分析,不支持索引
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -----黑洞存儲引擎
編譯過程中取消一些存儲引擎指令介紹
- -DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
- 示例如下:
- -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
- -DWITHOUT_FEDERATED_STORAGE_ENGINE=1
- -DWITHOUT_PARTITION_STORAGE_ENGINE=1
編譯進過程中功能啓用的指令介紹
- -DWITH_READLINE=1 ----支持批量導入mysql數據
- -DWITH_SSL=system ----mysql支持ssl會話,實現基於ssl的數據復
- -DWITH_ZLIB=system ----壓縮庫
- -DWITH_LIBWRAP=0 ---是否可以基於WRAP實現訪問控制
其他功能指令
- -DMYSQL_TCP_PORT=3306 ----默認端口
- -DMYSQL_UNIX_ADDR=/tmp/mysql.sock ----默認套接字文件路徑
- -DENABLED_LOCAL_INFILE=1 -----是否啓用LOCAL_INFILE功能
- -DEXTRA_CHARSETS=all -----是否支持額外的字符集
- -DDEFAULT_CHARSET=utf8 -----默認編碼機制
- -DDEFAULT_COLLATION=utf8_general_ci -----設定默認語言的排序規則
- -DWITH_DEBUG=0 -----DEBUG功能設置
- -DENABLE_PROFILING=1 -----性能分析功能是否啓用
準備mysql服務腳本
- # cd /usr/local/mysql/
- # cp support-files/mysql.server /etc/init.d/mysqld
準備mysql的配置文件
- # cp support-files/my-large.cnf /etc/my.cnf
- 編輯配置文件指定數據目錄位置
- # vim /etc/my.cnf
- 添加指令:
- datadir = /mydata/data
初始、啓動mysql
- # chown :mysql /usr/local/mysql/ -R
- # /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data
- 啓動mysql
- # chkconfig --add mysqld
- # /etc/init.d/mysqld start
將mysql命令添加到環境變量中
- 添加內容:
- export PATH=$PATH:/usr/local/mysql/bin
- 保存退出
- 讀取環境變量配置,讓mysql命令立即生效
- # . /etc/profile.d/mysql.sh
輸出mysql的man手冊到man命令的查找路徑
- # vim /etc/man.config
- 添加內容如下:
- MANPATH /usr/local/mysql/man
輸出mysql的庫文件
- # vim /etc/ld.so.conf.d/mysql.conf
- 添加內容如下:
- /usr/local/mysql/lib/
輸出mysql的頭文件到系統頭文件
- # ln -sv /usr/local/mysql/include/ /usr/include/mysql
到這裏整個編譯過程就結束了