一、源码编译安装gcc-5.1.0
1、下载gcc源码包
2、解压压缩包
3、下载编译所需的依赖包
这个步骤有两种方式完成:
a) 如果Linux有网络连接,直接这样:
b) 如果Linux没有网络连接(我主机和虚拟机是Host-only,不能联网,所以另外想办法),则用Windows上网下载这几个包:
ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2
http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz
然后解压并移动到gcc-4.8.1下面:
tar -xjf gmp-4.3.2.tar.bz2
tar -xjf mpfr-2.4.2.tar.bz2
tar -xzf mpc-0.8.1.tar.gz
mv gmp-4.3.2 gcc-4.8.1/gmp
mv mpfr-2.4.2 gcc-4.8.1/mpfr
mv mpc-0.8.1 gcc-4.8.1/mpc
这样的做法好处是,不用单独编译gmp、mpfr和mpc三个包,放在gcc源码下面一起编译(事实上这也是gcc-4.8.1/contrib/download_prerequisites脚本的做法,个人感觉更简洁些)。我在编译是选择了第一种方法,第二种方法到底咋样本人没有实验过。
4、编译安装gcc
编译参数说明:
--prefix=/usr/local/ 指定安装路径
--enable-bootstrap 这里引用网上一些文献对该参数的解释:用第一次编译生成的程序进行第二次编译,然后用再次生成的程序进行第三次编译,并且检查比较第二次和第三次结果的正确性,也就是进行冗余的编译检查工作。 非交叉编译环境下,默认已经将该值设为 enable,可以不用显示指定;交叉编译环境下,需要显示将其值设为 disable。
--enable-checking=release 以软件发布版的标准来对编译时生成的代码进行一致性检查;设置该选项为 enable并不会改变编译器生成的二进制结果,但是会导致编译的时间增加;该选项仅支持gcc编译器; 总体而言,对于上面这个选项,机器的硬件配置较低,以及不愿等待太久编译时间的童鞋,可以设置为 disable;但是这会增加产生未预期的错误的风险,所以应该慎用。 可以同时设置 --disable-bootstrap 与 --disable-checking,这对编译过程的提速很有帮助。
--enable-threads=posix 顾名思义,启用posix标准的线程支持 ,要让程序能在符合POSIX规范的linux发布版上正确运行,就应该启用该选项,取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。
--enable-languages=c,c++ 支持的高级语言类型和运行时库,可以设置的所有语言包括 ada,c,c++,Fortran,java,objc,obj-c++,GO 等语言。这里只开启了c和c++,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。
--disable-multilib 如果你的操作系统是32位,默认就已经设置为 disable,这意味着gcc仅能生成32位的可执行程序;如果你的操作系统是64位,默认就已经设置为 enable,这意味着用gcc编译其它源文件时可以通过 -m32 选项来决定是否生成32位机器代码。如果在64位系统上,要禁止生成32位代码, 设置 --disable-multilib。
--enable-gather-detailed-mem-stats 允许收集详细的内存使用信息,如果设置该参数为 enable,则将来编译好的gcc可执行程序,可以通过 -fmem-report 选项来输出编译其它程序时的实时内存使用情况。
--with-long-double-128 指定 long double 类型为128位(16字节!);设置为 without,则 long double类型将为64位(8字节),这将与普通的 double 类型一样。 基于 Glib 2.4以上版本编译时,默认已经是128位。
5、后续操作
导出环境变量:
导出头文件:
导出库文件:
二、源码编译MariaDB
为啥开头要安装gcc-5.1,就是因为我在第一次编译mariadb时,到make的时候报错,在网上找到的这么一句哈:
MariaDB is a community-developed fork and a drop-in replacement for the MySQL relational database management system.
This package is known to build and work properly using an LFS-7.7 platform.
This package is known to build and work properly using the gcc-5 compiler.
MariaDB是一个由社区开发的叉和MySQL的替代关系数据库管理系统。
这个包是构建和使用lfs - 7.7平台正常工作。
这个包是构建和使用gcc-5编译器正常工作。
1、创建数据存放目录
2、创建mysql用户
3、安装mariadb
4、参数说明
# 安装根目录
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
# 数据存储目录
-DMYSQL_DATADIR=/data/mydata
# UNIX socket文件
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
# 配置文件(my.cnf)目录
-DSYSCONFDIR=/etc
# 默认字符集
-DDEFAULT_CHARSET=utf8
# 默认字符校对
-DDEFAULT_COLLATION=utf8_general_ci
# TCP/IP端口
-DMYSQL_TCP_PORT=3306
# * ARCHIVE 引擎支持
-DWITH_ARCHIVE_STORAGE_ENGINE=1
# * ARIA 引擎支持
-DWITH_ARIA_STORAGE_ENGINE=1
# * BLACKHOLE 引擎支持
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
# * FEDERATEDX 引擎支持
-DWITH_FEDERATEDX_STORAGE_ENGINE=1
# * PARTITION 引擎支持
-DWITH_PARTITION_STORAGE_ENGINE=1
# * PERFSCHEMA 引擎支持
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
# * SPHINX 引擎支持
-DWITH_SPHINX_STORAGE_ENGINE=1
# * XTRADB 支持
-DWITH_XTRADB_STORAGE_ENGINE=1
# * innoDB 引擎支持
-DWITH_INNOBASE_STORAGE_ENGINE=1
# * Myisam 引擎支持
-DWITH_MYISAM_STORAGE_ENGINE=1
# readline库
-DWITH_READLINE=1
# 启用加载本地数据
-DENABLED_LOCAL_INFILE=1
# 扩展支持编码 ( all | utf8,gbk,gb2312 | none )
-DWITH_EXTRA_CHARSETS=all
# 扩展字符支持
-DEXTRA_CHARSETS=all
# 系统传输使用SSL加密
-DWITH_SSL=system
# 系统传输使用zlib压缩,节约带宽
-DWITH_ZLIB=system
# libwrap库
-DWITH_LIBWRAP=0
# 运行用户
-DMYSQL_USER=mysql
# 调试模式
-DWITH_DEBUG=0
5、编译引擎选项说明
默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT__STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
6、编译时错误解决方法
重新编译时,需要清除旧的对象文件和缓存信息。
#make clean
#rm -f CMakeCache.txt
#rm -rf /etc/my.cnf
错误:Curses library not found. Please install appropriate package,
解决方案:
先安装 ncurses-devel 包
yum install ncurses-devel
再删除刚才编译生成的 CMakeCache.txt 文件
rm CMakeCache.txt
再次执行一次cmake ...
一般都可以顺利安装的。
7、配置MariaDB
初始化数据库:
设置配置文件:
设置启动脚本:
启动服务:
导出环境变量:
导出头文件:
导出库文件:
设置数据库用户密码:
使用mysql_secure_installation这个脚本来进行安全配置:
现mysql不输入用户名密码直接登录数据库
8、小技巧
由于make时间较久,一般可以使用-j 选项在加CPU核心说就能加速,下面就是自动查看当前系统CPU核心并根据核心数进行编译。
[ "`cat /proc/cpuinfo |grep 'processor'|wc -l`" = "1" ] && make
[ "`cat /proc/cpuinfo |grep 'processor'|wc -l`" != "1" ] && make -j`cat /proc/cpuinfo |grep 'processor'|wc -l`