MySQL 8.4源码编译安装(一)

举报
Raymond运维 发表于 2025/09/21 13:45:52 2025/09/21
【摘要】 MySQL 8.4源码编译安装

2.4.2 MySQL 8.4

2.4.2.1 用户和组

# Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、 Kylin Server、UOS Server、Ubuntu、Debian
useradd -r -s /sbin/nologin -d /data/mysql mysql

# openSUSE
groupadd -r mysql
useradd -s /sbin/nologin -d /data/mysql -r -g mysql mysql

2.4.2.2 准备数据库目录

mkdir -p /data/mysql
chown mysql:mysql /data/mysql

2.4.2.3 下载并解压缩源码包

MySQL源码包下载,去“https://www.mysql.com/”网站下载,选择“DOWNLOADS”,如图56所示。

图56 下载MySQL源码包

选择“MySQL Community (GPL) Downloads”,如图57所示。

图57 下载MySQL源码包

然后选择“MySQL Community Server”,如图58所示。


)

图58 下载MySQL源码包

然后版本选择“8.4.5 LTS”,操作系统选择“Source Code”,系统版本选择“All Operating Systems (Generic) (Architecture Independent)”,然后选择下面的“mysql-8.4.5.tar.gz”包后面的“Download”进行下载,如图59所示。

图49 下载MySQL源码包

cd /usr/local/src/

# Rocky、Almalinux、CentOS、AnolisOS、OpenCloudOS、Kylin Server默认没有wget包,需要安装
yum install -y wget

# openEuler 22.03/24.03 LTS、AnolisOS 23、OpenCloudOS 9没有安装tar包,需要安装
yum install -y tar

wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.5.tar.gz

tar xf mysql-8.4.5.tar.gz

2.4.2.4 源码编译安装

编译安装说明 :

利用cmake编译,而利用传统方法,cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。

编译选项:https://dev.mysql.com/doc/refman/8.4/en/source-configuration-options.html。

MySQL cmake 一些常用的参数解释

-DCMAKE_INSTALL_PREFIX # MariaDB 的安装目录
-DMYSQL_DATADIR # MariaDB 数据存储路径
-DSYSCONFDIR # 配置文件目录
-DWITH_INNOBASE_STORAGE_ENGINE # 是否安装 innodb 存储引擎 - 参数:1 or 0
-DWITH_ARCHIVE_STORAGE_ENGINE # 是否安装 archive 存储引擎 - 参数:1 or 0
-DWITH_BLACKHOLE_STORAGE_ENGINE # 是否安装 blackhole 存储引擎 - 参数:1 or 0
-DWITH_DEBUG # 是 MariaDB 编译时的一个 CMake 参数,用于启用或禁用调试模式,1是启用,0是禁用
-DWITH_SSL # 用于指定是否启用 SSL 支持,system是使用系统已安装的 OpenSSL(推荐,依赖系统包)。
-DWITH_LIBWRAP # 用于控制是否启用 libwrap(TCP Wrappers)支持,0是禁用 libwrap,不启用 TCP Wrappers 支持,避免潜在的性能影响
-DENABLED_LOCAL_INFILE # 是否开启 load data infile 命令 - 参数:1 or 0
-DMYSQL_UNIX_ADDR # Unix socket 文件路径
-DDEFAULT_CHARSET # 默认字符集
-DDEFAULT_COLLATION # 校验字符
-DWITH_BOOST # 用于控制是否在构建项目时启用对 Boost 库 的支持。
-DFORCE_INSOURCE_BUILD # 用于 强制在源码目录内进行构建(in-source build),而不是推荐的外源码构建(out-of-source build)。设置该选项后:允许或强制你在源码目录中直接运行  cmake .  和  make ,不需要单独建 build 目录。
-DWITH_SYSTEMD # 是否 systemctl 管理 - 参数:1 or 0
2.4.2.4.1 Rocky 10、Almalinux 10和CentOS Stream 10

进入mysql包解压的目录:

cd mysql-8.4.5/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at CMakeLists.txt:514 (PROJECT):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH. # 提示,通过设置环境变量 “CC” 或 CMake 缓存条目CMAKE_C_COMPILER到编译器,或者如果编译器名称在 PATH,需要安装gcc。


CMake Error at CMakeLists.txt:514 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.  # 提示,通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中),需要安装gcc-c++。


-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

yum install -y gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:85 (MESSAGE):
  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。

Call Stack (most recent call first):
  cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
  cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
  CMakeLists.txt:1859 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) 
CMake Error at cmake/readline.cmake:93 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
  Cannot find RPC development libraries.  You need to install the required
  packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:

    Debian/Ubuntu:              apt install libtirpc-dev
    RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  cmake/rpc.cmake:107 (WARN_MISSING_SYSTEM_TIRPC)
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


CMake Error at cmake/rpc.cmake:108 (MESSAGE):
  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


-- Configuring incomplete, errors occurred!

安装libtirpc-devel包:

[root@rocky10 mysql-8.4.5]# yum install -y libtirpc-devel
Last metadata expiration check: 0:08:53 ago on Tue 10 Jun 2025 03:30:49 PM CST.
No match for argument: libtirpc-devel
Error: Unable to find a match: libtirpc-devel
# 没有找到libtirpc-devel包

# Rocky 10要启用devel镜像仓库
dnf config-manager --set-enabled devel

[root@almalinux10 mysql-8.4.5]# yum install -y libtirpc-devel
Last metadata expiration check: 0:04:24 ago on Tue 10 Jun 2025 04:12:22 PM CST.
No match for argument: libtirpc-devel
Error: Unable to find a match: libtirpc-devel
# 没有找到libtirpc-devel包

# Almalinux 10和CentOS Stream 10要启用crb镜像仓库
dnf config-manager --set-enabled crb

yum install -y libtirpc-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
  Cannot find rpcgen executable.  You need to install the required packages: # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:

    Debian/Ubuntu:              apt install rpcsvc-proto
    RedHat/Fedora/Oracle Linux: yum install rpcgen
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:123 (WARN_MISSING_RPCGEN_EXECUTABLE)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:124 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


-- Configuring incomplete, errors occurred!

安装rpcgen包:

yum install -y rpcgen

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (35.2s)
-- Generating done (5.6s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5

执行make:

make -j $(nproc) && make install
...
/usr/local/src/mysql-8.4.5/extra/boost/boost_1_84_0/boost/multiprecision/cpp_bin_float.hpp:40:10: fatal error: quadmath.h: No such file or directory
   40 | #include <quadmath.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[2]: *** [sql/CMakeFiles/sql_gis.dir/build.make:90: sql/CMakeFiles/sql_gis.dir/gis/buffer.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:50362: sql/CMakeFiles/sql_gis.dir/all] Error 2
make: *** [Makefile:166: all] Error 2

安装boost-devel包:

yum install -y boost-devel

需要重新执行cmake:

# 再次执行make之前先清理之前的操作
make clean

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at sql/CMakeLists.txt:1316 (MESSAGE):
  Cannot find /usr/local/src/mysql-8.4.5/sql/sql_yacc.h


-- Configuring incomplete, errors occurred!

安装bison包:

yum install -y bison

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (35.7s)
-- Generating done (6.3s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5

重新执行make:

make -j $(nproc) && make install

总结编译过程:

# Rocky 10要启用devel镜像仓库
dnf config-manager --set-enabled devel

# Almalinux 10和CentOS Stream 10要启用crb镜像仓库
dnf config-manager --set-enabled crb

# 安装依赖包
yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen boost-devel bison

# 进入mysql包解压的目录
cd mysql-8.4.5/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1

# 执行make
make -j $(nproc) && make install
2.4.2.4.2 Rocky 8/9、Almalinux 8/9和CentOS Stream 8/9

进入mysql包解压的目录:

cd mysql-8.4.5/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at CMakeLists.txt:390 (MESSAGE):
  Could not find devtoolset compiler/linker in /opt/rh/gcc-toolset-12


CMake Warning at CMakeLists.txt:392 (MESSAGE):
  You need to install the required packages: # 提示,您需要安装所需的软件包:

   yum install gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc



CMake Error at CMakeLists.txt:394 (MESSAGE):
  Or you can set CMAKE_C_COMPILER and CMAKE_CXX_COMPILER explicitly.  # 提示,需要安装gcc和gcc-c++


-- Configuring incomplete, errors occurred!

安装依赖包:

yum install -y gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:85 (MESSAGE):
  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。

Call Stack (most recent call first):
  cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
  cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
  CMakeLists.txt:1859 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
  Cannot find RPC development libraries.  You need to install the required
  packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:

    Debian/Ubuntu:              apt install libtirpc-dev
    RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  cmake/rpc.cmake:107 (WARN_MISSING_SYSTEM_TIRPC)
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


CMake Error at cmake/rpc.cmake:108 (MESSAGE):
  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


-- Configuring incomplete, errors occurred!

安装libtirpc-devel包:

[root@rocky9 mysql-8.4.5]# yum install -y libtirpc-devel
Last metadata expiration check: 0:44:27 ago on Wed 30 Apr 2025 04:42:08 PM CST.
No match for argument: libtirpc-devel
Error: Unable to find a match: libtirpc-devel
# 没有找到libtirpc-devel包

# Rocky 9要启用devel镜像仓库
dnf config-manager --set-enabled devel

[root@almalinux9 mysql-8.4.5]# yum install -y libtirpc-devel
Last metadata expiration check: 0:07:14 ago on Sat 03 May 2025 02:38:18 PM CST.
No match for argument: libtirpc-devel
Error: Unable to find a match: libtirpc-devel
# 没有找到libtirpc-devel包

# Almalinux 9和CentOS Stream 9要启用crb镜像仓库
dnf config-manager --set-enabled crb

yum install -y libtirpc-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
  Cannot find rpcgen executable.  You need to install the required packages: # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:

    Debian/Ubuntu:              apt install rpcsvc-proto
    RedHat/Fedora/Oracle Linux: yum install rpcgen
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:123 (WARN_MISSING_RPCGEN_EXECUTABLE)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:124 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


-- Configuring incomplete, errors occurred!

安装rpcgen包:

[root@rocky8 mysql-8.4.5]# yum install -y rpcgen
Last metadata expiration check: 0:13:53 ago on Tue 27 May 2025 09:26:15 PM CST.
No match for argument: rpcgen
Error: Unable to find a match: rpcgen
# 提示,没有找到rpcgen包

[root@almalinux8 mysql-8.4.5]# yum install -y rpcgen
Last metadata expiration check: 0:13:53 ago on Tue 27 May 2025 09:26:15 PM CST.
No match for argument: rpcgen
Error: Unable to find a match: rpcgen
# 提示,没有找到rpcgen包

[root@centos8 mysql-8.4.5]# yum install -y rpcgen
Last metadata expiration check: 0:10:44 ago on Wed 28 May 2025 09:56:36 AM CST.
No match for argument: rpcgen
Error: Unable to find a match: rpcgen
# 提示,找不到rpcgen包

# Rocky 8、Almalinux 8和CentOS Stream 8要启用powertools镜像仓库
dnf config-manager --set-enabled powertool

yum install -y rpcgen

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
# 正常会有类似如下的输出
-- Configuring done (34.5s)
-- Generating done (4.2s)
-- Build files have been written to: /usr/local/src/mysql-8.4.55

执行make:

make -j $(nproc) && make install

总结编译过程:

# Rocky 9要启用devel镜像仓库
dnf config-manager --set-enabled devel

# Almalinux 9和CentOS Stream 9要启用crb镜像仓库
dnf config-manager --set-enabled crb

# Rocky 8、Almalinux 8和CentOS Stream 8要启用powertools镜像仓库
dnf config-manager --set-enabled powertool

# 安装依赖包
yum install -y cmake gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen

# 进入mysql包解压的目录
cd mysql-8.4.5/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1

# 执行make
make -j $(nproc) && make install
2.4.2.4.3 CentOS 7

进入mysql包解压的目录:

cd mysql-8.4.5/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at CMakeLists.txt:75 (MESSAGE):
  Please use cmake3 rather than cmake on this platform


-- Please install cmake3 (yum install cmake3)
CMake Error at CMakeLists.txt:107 (CMAKE_MINIMUM_REQUIRED):
  CMake 3.14.6 or higher is required.  You are running version 2.8.12.2 # 提示,需要 CMake 3.14.6 或更高版本。您运行的是版本 2.8.12.2。


-- Configuring incomplete, errors occurred!

安装cmake:

去“https://cmake.org/download/”网址下载cmake二进制包,如图60所示。

图60 下载cmake二进制包

# 卸载cmake
yum remove -y cmake

cd ..

# github下载地址:
wget https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-linux-x86_64.tar.gz

# 国内下载地址:
wget https://cmake.org/files/v3.31/cmake-3.31.7-linux-x86_64.tar.gz
tar xf cmake-3.31.7-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.31.7-linux-x86_64/bin/cmake /usr/bin/

[root@centos7 src]# cmake --version
cmake version 3.31.7

CMake suite maintained and supported by Kitware (kitware.com/cmake).

再次进入mysql包解压的目录:

cd mysql-8.4.5/

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at CMakeLists.txt:390 (MESSAGE):
  Could not find devtoolset compiler/linker in /opt/rh/devtoolset-11


CMake Warning at CMakeLists.txt:392 (MESSAGE):
  You need to install the required packages: # 您需要安装所需的软件包:

   yum install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils



CMake Error at CMakeLists.txt:394 (MESSAGE):
  Or you can set CMAKE_C_COMPILER and CMAKE_CXX_COMPILER explicitly. # 提示,需要安装gcc和gcc-c++


-- Configuring incomplete, errors occurred!

安装依赖包:

[root@centos7 mysql-8.4.5]# yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutil gcc gcc-++
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
No package devtoolset-11-gcc available.
No package devtoolset-11-gcc-c++ available.
No package devtoolset-11-binutil available.
Error: Nothing to do
# 找不到依赖包

# 安装sclo镜像源包
yum install -y centos-release-scl

# 替换镜像仓库地址
MIRROR=mirrors.tencent.com
OS_RELEASE_FULL_VERSION=`cat /etc/centos-release | sed -rn 's/^(CentOS Linux release )(.*)( \(Core\))/\2/p'`
sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^# baseurl=|baseurl=|g' -e 's|^#baseurl=|baseurl=|g' -e 's|http://mirror.centos.org/centos|https://'${MIRROR}'/centos-vault|g' -e "s/7/${OS_RELEASE_FULL_VERSION}/g"  /etc/yum.repos.d/CentOS-SCLo-*.repo

yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutil gcc gcc-++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:85 (MESSAGE):
  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。

Call Stack (most recent call first):
  cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
  cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
  CMakeLists.txt:1859 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (19.3s)
-- Generating done (4.8s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装sclo镜像源包
yum install -y centos-release-scl

# 替换镜像仓库地址
MIRROR=mirrors.tencent.com
OS_RELEASE_FULL_VERSION=`cat /etc/centos-release | sed -rn 's/^(CentOS Linux release )(.*)( \(Core\))/\2/p'`
sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^# baseurl=|baseurl=|g' -e 's|^#baseurl=|baseurl=|g' -e 's|http://mirror.centos.org/centos|https://'${MIRROR}'/centos-vault|g' -e "s/7/${OS_RELEASE_FULL_VERSION}/g"  /etc/yum.repos.d/CentOS-SCLo-*.repo

# 安装依赖包
yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutil gcc gcc-++ openssl-devel ncurses-devel

# 安装cmake
wget https://cmake.org/files/v3.31/cmake-3.31.7-linux-x86_64.tar.gz
tar xf cmake-3.31.7-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.31.7-linux-x86_64/bin/cmake /usr/bin/

# 进入mysql包解压的目录:
cd mysql-8.4.5/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1

# 执行make
make -j $(nproc) && make install
2.4.2.4.4 openEuler 22.03/24.03 LTS和Kylin Server V11

进入mysql包解压的目录:

cd mysql-8.4.5/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool. # 提示,CMake 错误:CMake 找不到与“Unix Makefiles”对应的构建程序。CMAKE_MAKE_PROGRAM 未设置。您可能需要选择其他构建工具。需要安装make。
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage # 提示,CMake 错误:EnableLanguage 后未设置 CMAKE_C_COMPILER,需要安装gcc。
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage # 提示,CMake 错误:在 EnableLanguage 之后未设置 CMAKE_CXX_COMPILER,需要安装gcc-c++。
-- Configuring incomplete, errors occurred!

安装make、gcc和gcc-c++包:

yum install -y make gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:85 (MESSAGE):
  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。

Call Stack (most recent call first):
  cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
  cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
  CMakeLists.txt:1859 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
  Cannot find RPC development libraries.  You need to install the required
  packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:

    Debian/Ubuntu:              apt install libtirpc-dev
    RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  cmake/rpc.cmake:107 (WARN_MISSING_SYSTEM_TIRPC)
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


CMake Error at cmake/rpc.cmake:108 (MESSAGE):
  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


-- Configuring incomplete, errors occurred!

安装libtirpc-devel包:

yum install -y libtirpc-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
  Cannot find rpcgen executable.  You need to install the required packages: # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:

    Debian/Ubuntu:              apt install rpcsvc-proto
    RedHat/Fedora/Oracle Linux: yum install rpcgen
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:123 (WARN_MISSING_RPCGEN_EXECUTABLE)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:124 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


-- Configuring incomplete, errors occurred!

安装rpcgen包:

yum install -y rpcgen

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (1.8s)
-- Generating done (3.4s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen

# 进入mysql包解压的目录
cd mysql-8.4.5/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1

# 执行make
make -j $(nproc) && make install
2.4.2.4.5 AnolisOS 23

进入mysql包解压的目录:

cd mysql-8.4.5/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at CMakeLists.txt:514 (PROJECT):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.  # 提示,通过设置环境变量 “CC” 或 CMake 缓存条目CMAKE_C_COMPILER到编译器,或者如果编译器名称在 PATH,需要安装gcc。


CMake Error at CMakeLists.txt:514 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH. # 通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中),需要安装gcc-c++。


-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

yum install -y gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:85 (MESSAGE):
  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。

Call Stack (most recent call first):
  cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
  cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
  CMakeLists.txt:1859 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
  Cannot find RPC development libraries.  You need to install the required
  packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:

    Debian/Ubuntu:              apt install libtirpc-dev
    RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  cmake/rpc.cmake:107 (WARN_MISSING_SYSTEM_TIRPC)
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


CMake Error at cmake/rpc.cmake:108 (MESSAGE):
  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


-- Configuring incomplete, errors occurred!

安装libtirpc-devel包:

yum install -y libtirpc-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
  Cannot find rpcgen executable.  You need to install the required packages: # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:

    Debian/Ubuntu:              apt install rpcsvc-proto
    RedHat/Fedora/Oracle Linux: yum install rpcgen
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:123 (WARN_MISSING_RPCGEN_EXECUTABLE)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:124 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


-- Configuring incomplete, errors occurred!

安装rpcgen包:

yum install -y rpcgen

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (35.3s)
-- Generating done (5.5s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen

# 进入mysql包解压的目录
cd mysql-8.4.5/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1

# 执行make
make -j $(nproc) && make install
2.4.2.4.6 AnolisOS 8和OpenCloudOS 8

进入mysql包解压的目录:

cd mysql-8.4.5/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at CMakeLists.txt:514 (PROJECT):
  The CMAKE_C_COMPILER:

    /usr/bin/cc

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH. # 提示,通过设置环境变量 “CC” 或 CMake 缓存条目CMAKE_C_COMPILER到编译器,或者如果编译器名称在 PATH。


CMake Error at CMakeLists.txt:514 (PROJECT):
  The CMAKE_CXX_COMPILER:

    /usr/bin/c++

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH. # 通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中)。


-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

yum install -y gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at CMakeLists.txt:566 (MESSAGE):
  This is an in-source build


-- CMAKE_GENERATOR: Unix Makefiles
CMake Error at cmake/os/Linux.cmake:73 (MESSAGE):
  GCC 10 or newer is required # 提示,需要 GCC 10 或更高版本
Call Stack (most recent call first):
  CMakeLists.txt:667 (INCLUDE)


-- Configuring incomplete, errors occurred!

编译安装gcc:

[root@anolis8 mysql-8.4.5]# gcc --version
gcc (GCC) 8.5.0 20210514 (Anolis 8.5.0-24.0.1) # 可以看到gcc版本是8.5.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@opencloudos8 mysql-8.4.5]# gcc --version
gcc (GCC) 8.5.0 20210514 (Tencent 8.5.0-26)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

cd ..

# 注意:这里需要编译安装gcc 11,不要装gcc 10,装了gcc 10在登录mysql之后就退出了,报错“Segmentation fault”。
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/gcc-11.5.0.tar.gz
tar xf gcc-11.5.0.tar.gz
cd gcc-11.5.0

# 安装gcc依赖包
yum install -y bzip2

# 下载gcc依赖包
./contrib/download_prerequisites
2025-05-06 23:17:03 URL:http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "gmp-6.1.0.tar.bz2" [1]
2025-05-06 23:17:08 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.6.tar.bz2 [1287202/1287202] -> "mpfr-3.1.6.tar.bz2" [1]
2025-05-06 23:17:11 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "mpc-1.0.3.tar.gz" [1]
2025-05-06 23:17:22 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "isl-0.18.tar.bz2" [1]
gmp-6.1.0.tar.bz2: OK
mpfr-3.1.6.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.18.tar.bz2: OK
All prerequisites downloaded successfully.

mkdir build
cd build/

# 执行configure
../configure --prefix=/usr --disable-multilib 
...
configure: creating ./config.status
config.status: creating Makefile

# 执行make
make -j 4 && make install
...
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[3]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[2]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[1]: Leaving directory '/usr/local/src/gcc-11.5.0/build'

[root@anolis8 build]# gcc --version
gcc (GCC) 11.5.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

再次进入mysql包解压的目录:

cd ../../mysql-8.4.5/

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:85 (MESSAGE):
  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。

Call Stack (most recent call first):
  cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
  cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
  CMakeLists.txt:1859 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
  Cannot find RPC development libraries.  You need to install the required
  packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:

    Debian/Ubuntu:              apt install libtirpc-dev
    RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  cmake/rpc.cmake:107 (WARN_MISSING_SYSTEM_TIRPC)
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


CMake Error at cmake/rpc.cmake:108 (MESSAGE):
  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


-- Configuring incomplete, errors occurred!

安装libtirpc-devel包:

yum install -y libtirpc-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
  Cannot find rpcgen executable.  You need to install the required packages: # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:

    Debian/Ubuntu:              apt install rpcsvc-proto
    RedHat/Fedora/Oracle Linux: yum install rpcgen
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:123 (WARN_MISSING_RPCGEN_EXECUTABLE)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:124 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


-- Configuring incomplete, errors occurred!

安装rpcgen包:

[root@opencloudos8 mysql-8.4.5]# yum install -y rpcgen
Last metadata expiration check: 0:01:02 ago on Wed 07 May 2025 12:24:52 AM CST.
No match for argument: rpcgen
Error: Unable to find a match: rpcgen
# 提示,找不到rpcgen包

# OpenCloudOS 8要启用PowerTools镜像仓库
dnf config-manager --set-enabled PowerTools

yum install -y rpcgen

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (1.4s)
-- Generating done (2.3s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5

执行make:

make -j $(nproc) && make install

总结编译过程:

# OpenCloudOS 8要启用PowerTools镜像仓库
dnf config-manager --set-enabled PowerTools

# 安装依赖包
yum install -y cmake gcc gcc-c++ bzip2 openssl-devel ncurses-devel libtirpc-devel rpcgen

# 编译gcc
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/gcc-11.5.0.tar.gz
tar xf gcc-11.5.0.tar.gz
cd gcc-11.5.0
./contrib/download_prerequisites
mkdir build
cd build/
../configure --prefix=/usr --disable-multilib  
make -j 4 && make install

# 进入mysql包解压的目录
cd ../../mysql-8.4.5/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1

# 执行make
make -j $(nproc) && make install
2.4.2.4.7 OpenCloudOS 9

进入mysql包解压的目录:

cd mysql-8.4.5/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at CMakeLists.txt:514 (PROJECT):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH. # 提示,通过设置环境变量 “CC” 或 CMake 缓存条目CMAKE_C_COMPILER到编译器,或者如果编译器名称在 PATH。


CMake Error at CMakeLists.txt:514 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH. # 通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中)。


-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

yum install -y gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/systemd.cmake:60 (MESSAGE):
  Unable to detect systemd support on build machine, Aborting cmake build. # 提示,无法在构建计算机上检测到 systemd 支持,中止 cmake 构建。
Call Stack (most recent call first):
  cmake/systemd.cmake:80 (MYSQL_CHECK_SYSTEMD)
  CMakeLists.txt:1555 (INCLUDE)


-- Configuring incomplete, errors occurred!

安装systemd-devel包:

yum install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:85 (MESSAGE):
  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。

Call Stack (most recent call first):
  cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
  cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
  CMakeLists.txt:1859 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
  Cannot find RPC development libraries.  You need to install the required
  packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:

    Debian/Ubuntu:              apt install libtirpc-dev
    RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  cmake/rpc.cmake:107 (WARN_MISSING_SYSTEM_TIRPC)
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


CMake Error at cmake/rpc.cmake:108 (MESSAGE):
  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


-- Configuring incomplete, errors occurred!

安装libtirpc-devel包:

yum install -y libtirpc-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
  Cannot find rpcgen executable.  You need to install the required packages: # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:

    Debian/Ubuntu:              apt install rpcsvc-proto
    RedHat/Fedora/Oracle Linux: yum install rpcgen
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:123 (WARN_MISSING_RPCGEN_EXECUTABLE)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:124 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


-- Configuring incomplete, errors occurred!

安装rpcgen包:

yum install -y rpcgen

继续执行cmake:

rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (24.7s)
-- Generating done (2.5s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake gcc gcc-c++ systemd-devel openssl-devel ncurses-devel libtirpc-devel rpcgen

# 进入mysql包解压的目录
cd mysql-8.4.5/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1

# 执行make
make -j $(nproc) && make install
2.4.2.4.8 Kylin Server V10

进入mysql包解压的目录:

cd mysql-8.4.5/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool. # 提示,CMake 错误:CMake 找不到与“Unix Makefiles”对应的构建程序。CMAKE_MAKE_PROGRAM 未设置。您可能需要选择其他构建工具。需要安装make。
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage # 提示,CMake 错误:EnableLanguage 后未设置 CMAKE_C_COMPILER,需要安装gcc。
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage # 提示,CMake 错误:在 EnableLanguage 之后未设置 CMAKE_CXX_COMPILER,需要安装gcc-c++。
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeOutput.log".

安装make、gcc和gcc-c++包:

yum install -y make gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at CMakeLists.txt:566 (MESSAGE):
  This is an in-source build


-- CMAKE_GENERATOR: Unix Makefiles
CMake Error at cmake/os/Linux.cmake:73 (MESSAGE):
  GCC 10 or newer is required # 提示,需要 GCC 10 或更高版本
Call Stack (most recent call first):
  CMakeLists.txt:667 (INCLUDE)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeOutput.log".

编译安装gcc:

[root@kylin10 mysql-8.4.5]# gcc --version
gcc (GCC) 7.3.0 # 可以看到gcc版本是7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

cd ..

# 注意:这里需要编译安装gcc 11,不要装gcc 10,装了gcc 10在登录mysql之后就退出了,报错“Segmentation fault”。
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/gcc-11.5.0.tar.gz
tar xf gcc-11.5.0.tar.gz
cd gcc-11.5.0

# 下载gcc依赖包
./contrib/download_prerequisites
2025-05-04 11:56:53 URL:https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "gmp-6.1.0.tar.bz2" [1]
2025-05-04 11:56:56 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.6.tar.bz2 [1287202/1287202] -> "mpfr-3.1.6.tar.bz2" [1]
2025-05-04 11:56:59 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "mpc-1.0.3.tar.gz" [1]
2025-05-04 11:57:02 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "isl-0.18.tar.bz2" [1]
gmp-6.1.0.tar.bz2: OK
mpfr-3.1.6.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.18.tar.bz2: OK
All prerequisites downloaded successfully.

mkdir build
cd build/

# 执行configure
../configure --prefix=/usr --disable-multilib 
...
configure: creating ./config.status
config.status: creating Makefile

# 执行make
make -j 4 && make install
...
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[3]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[2]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[1]: Leaving directory '/usr/local/src/gcc-11.5.0/build'

[root@kylin10 build]# gcc --version
gcc (GCC) 11.5.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

再次进入mysql包解压的目录:

cd ../../mysql-8.4.5/

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:85 (MESSAGE):
  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。

Call Stack (most recent call first):
  cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
  cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
  CMakeLists.txt:1859 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeError.log".

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeError.log".

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
  Cannot find RPC development libraries.  You need to install the required
  packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:

    Debian/Ubuntu:              apt install libtirpc-dev
    RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  cmake/rpc.cmake:107 (WARN_MISSING_SYSTEM_TIRPC)
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


CMake Error at cmake/rpc.cmake:108 (MESSAGE):
  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
  CMakeLists.txt:2097 (MYSQL_CHECK_RPC)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeError.log".

安装libtirpc-devel包:

yum install -y libtirpc-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
  Cannot find rpcgen executable.  You need to install the required packages:  # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:

    Debian/Ubuntu:              apt install rpcsvc-proto
    RedHat/Fedora/Oracle Linux: yum install rpcgen
    SuSE:                       zypper install glibc-devel

Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:123 (WARN_MISSING_RPCGEN_EXECUTABLE)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:124 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeError.log".

安装rpcgen包:

yum install -y rpcgen

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
# 正常会有类似如下的输出
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mysql-8.4.5

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen

# 编译gcc
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/gcc-11.5.0.tar.gz
tar xf gcc-11.5.0.tar.gz
cd gcc-11.5.0
./contrib/download_prerequisites
mkdir build
cd build/
../configure --prefix=/usr --disable-multilib  
make -j 4 && make install

# 进入mysql包解压的目录
cd ../../mysql-8.4.5/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1

# 执行make
make -j $(nproc) && make install
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。