获取源码

下载地址: https://dev.mysql.com/downloads/mysql/

upload successful

安装源码

rpm -ivh mysql-community-8.0.22-1.el7.src.rpm  ncurses.tar.gz

默认安装到 $HOME/rpmbuild

编译环境

安装 虚拟机

安装类型:开发环境+平台开发

版本:centos 7.8

[wangcj@localhost ~]$ cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
[wangcj@localhost ~]$

安装c++ 库和头文件

yum install glibc-headers

yum install gcc-c++ 

安装cmake

下载地址:https://cmake.org/download/

chmod +x cmake-3.19.0-rc3-Linux-x86_64.sh
./cmake-3.19.0-rc3-Linux-x86_64.sh --prefix=/usr/local/cmake

cmake 加入path

vi /etc/profile

export PATH=$PATH:/usr/local/cmake/bin

GCC国内镜像下载地址

下载速度不一,请选择速度最快的:

1) http://mirrors.nju.edu.cn/gnu/gcc/gcc-8.3.0/

2) http://mirrors.ustc.edu.cn/gnu/gcc/gcc-8.3.0/

3) https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-8.3.0/

GCC的依赖库

编译之前需先安装好GCC的依赖库:gmp、mpfr和mpc。编译还依赖m4等编译工具,如果没有,则在执行configue时会报相应的错误,这时需要先安装好这些编译工具。

gmp库

GMP为“GNU MP Bignum Library”的缩写,是一个GNU开源数学运算库。本文选择的是最新版本gmp-6.1.2,国内镜像下载地址:

1) https://mirrors.tuna.tsinghua.edu.cn/gnu/gmp/

2) http://mirrors.nju.edu.cn/gnu/gmp/

3) http://mirrors.ustc.edu.cn/gnu/gmp/

mpfr库

mpfr是一个GNU开源大数运算库,它依赖gmp。本文选择的是最新版本mpfr-4.0.2,国内镜像下载地址:

1) https://mirrors.tuna.tsinghua.edu.cn/gnu/mpfr/

2) http://mirrors.nju.edu.cn/gnu/mpfr/

3) http://mirrors.ustc.edu.cn/gnu/mpfr/

mpc库

mpc是GNU的开源复杂数字算法,它依赖gmp和mpfr。本文选择的是最新版本mpc-1.1.0,国内镜像下载地址:

1) https://mirrors.tuna.tsinghua.edu.cn/gnu/mpc/

2) http://mirrors.nju.edu.cn/gnu/mpc/

3) http://mirrors.ustc.edu.cn/gnu/mpc/

m4编译工具

本文选择的是最新版本m4-1.4.16,下载地址:

1) https://mirrors.tuna.tsinghua.edu.cn/gnu/m4/

2) http://mirrors.nju.edu.cn/gnu/m4/

3) http://mirrors.ustc.edu.cn/gnu/m4/

如果使用“–prefix”指定了安装目录,则在编译gmp等之前还需先设置好环境变量PATH,以便configure时能找到m4。

安装源代码包

涉及到的所有安装源代码包:

gcc-8.3.0.tar.gz

mpfr-4.0.2.tar.gz

gmp-6.1.2.tar.xz

mpc-1.0.3.tar.gz

GCC的依赖库间还互有依赖:mpfr依赖gmp、mpc依赖gmp和mpfr,所以GCC的编译安装顺序为:

1) m4(如果需要)

2) gmp

3) mpfr

4) mpc

5) GCC

为了不污染已有的编译和运行环境,将GCC及依赖库均安装到/usr/local目录,并且最好以root用户完成下述所有操作。

编译安装gmp

执行configure生成Makefile时,需要用到m4,一般路径为/usr/bin/m4,如果没有则需要先安装,否则报错“no usable m4”错误,手工安装m4从“https://www.gnu.org/software/m4/”下载。

具体安装步骤如下:

xz -d gmp-6.1.2.tar.xz
tar xf gmp-6.1.2.tar
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp-6.1.2
make
make install
ln -s /usr/local/gmp-6.1.2 /usr/local/gmp

编译安装mpfr

详细安装步骤如下:

tar xzf  mpfr-4.0.2.tar.gz
cd mpfr-4.0.2
./configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp
make
make install
ln -s /usr/local/mpfr-4.0.2 /usr/local/mpfr

编译安装mpc

tar xzf  mpc-1.1.0.tar.gz
cd mpc-1.1.0
./configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
make
make install
ln -s /usr/local/mpc-1.1.0 /usr/local/mpc

设置LD_LIBRARY_PATH


export LD_LIBRARY_PATH=/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/mpc/lib:$LD_LIBRARY_PATH

编译安装gcc

编译预计耗时三小时

tar xzf gcc-8.3.0.tar.gz
cd gcc-8.3.0
./configure --prefix=/usr/local/gcc-8.3.0 --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc --disable-multilib
make install
ln -s /usr/local/gcc-8.3.0 /usr/local/gcc
export PATH=/usr/local/gcc/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/gcc/lib64:$LD_LIBRARY_PATH
export MANPATH=/usr/local/gcc/share/man:$MANPATH
gcc --version

编译安装ncurses

tar zxvf ncurses.tar.gz
export LD_LIBRARY_PATH=/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/mpc/lib:$LD_LIBRARY_PATH
./configure

make && make install

编译 mysql

解压boost

boost 源码在mysql源码包中有提供

tar jxvf boost_1_73_0.tar.bz2

解压编译mysql源码

编译预计耗时一小时

tar zxvf mysql-8.0.22.tar.gz
cd mysql-8.0.22
mkdir bld && cd bld
export LD_LIBRARY_PATH=/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/mpc/lib:$LD_LIBRARY_PATH

export CC=/usr/local/gcc-8.3.0/bin/gcc
export CXX=/usr/local/gcc-8.3.0/bin/g++

cmake \
-DWITH_BOOST=/root/soft/boost_1_73_0 \
-DWITH_ROUTER=OFF=ON \
-DWITH_SYSTEMD=ON \
-DWITH_UNIT_TESTS=OFF \
-DBUILD_CONFIG=mysql_release \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql8 \
-DINSTALL_LAYOUT=RPM \
-DCMAKE_BUILD_TYPE=Release \
-DCPACK_MONOLITHIC_INSTALL=0 \
-DCOMPILATION_COMMENT="East China Cares Nanjing R&D" \
-DCOMPILATION_COMMENT_SERVER="East China Cares Nanjing R&D" \
..

make

make install

make package

测试

将编译出来的包 mysql-8.0.22-linux-x86_64.tar 上传到安装好的red hat enterprize linux 7.5 64位

如果系统的 libstdc++.so 的版本小于 6.0.25(gcc8.3.0),需要替换该库

替换步骤

rm /lib64/libstdc++.so.6

ln -s /lib64/libstdc++.so.6.0.25 libstdc++.so.6

ldconfig
[root@localhost sbin]# ./mysqld --version
/root/mysql-8.0.22-linux-x86_64/sbin/mysqld  Ver 8.0.22 for Linux on x86_64 (Source distribution)
[root@localhost sbin]#


数据库      源码编译 mysql8.0.22

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!