进入mysql包解压的目录:
cd mysql-8.4.5/
安装cmake包:
yum install -y cmake
执行cmake:
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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@uos20 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@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_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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 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_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
进入mysql包解压的目录:
cd mysql-8.4.5/
安装cmake包:
zypper install -y cmake
执行cmake:
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning:
No source or binary directory provided. Both will be assumed to be the
same as the current working directory, but note that this warning will
become a fatal error in future CMake releases.
-- Running cmake version 3.28.3
-- Could NOT find Git (missing: GIT_EXECUTABLE)
-- CMAKE_MODULE_PATH is /usr/local/src/mysql-8.4.5/cmake
-- MySQL 8.4.5
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
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++包:
zypper install -y gcc gcc-c++
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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:
opensuse15:/usr/local/src/mysql-8.4.5 # gcc --version
gcc (SUSE Linux) 7.5.0 # 可以看到gcc版本是7.5.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 15:17:24 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 15:17:46 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 15:18:00 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 15:18:26 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'
opensuse15:/usr/local/src/gcc-11.5.0/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_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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!
安装libopenssl-devel包:
zypper install -y libopenssl-devel
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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:
zypper install -y ncurses-devel
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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 # 注意,它提示安装的这个包是不行的,要安装libtirpc-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包:
zypper install -y libtirpc-devel
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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:
Debian/Ubuntu: apt install rpcsvc-proto
RedHat/Fedora/Oracle Linux: yum install rpcgen
SuSE: zypper install glibc-devel # 注意,它提示安装的这个包是不行的,要安装rpcgen
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包:
zypper install -y rpcgen
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (32.0s)
-- Generating done (3.7s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
zypper install -y cmake gcc gcc-c++ libopenssl-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_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
进入mysql包解压的目录:
cd mysql-8.4.5/
安装cmake包:
apt update
apt install -y cmake
执行cmake:
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
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!
安装g++包:
apt install -y g++
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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!
安装libssl-dev包:
apt install -y libssl-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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!
安装libncurses5-dev包:
apt install -y libncurses5-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
Cannot find pkg-config. You need to install the required package: # 找不到 pkg-config。您需要安装所需的软件包:
Debian/Ubuntu: apt install pkg-config
RedHat/Fedora/Oracle Linux: yum install pkg-config
SuSE: zypper install pkg-config
Call Stack (most recent call first):
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2097 (MYSQL_CHECK_RPC)
CMake Error at /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
/usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.28/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
cmake/pkg-config.cmake:37 (FIND_PACKAGE)
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2097 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
安装pkg-config包:
apt install -y pkg-config
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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-dev包:
apt install -y libtirpc-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (24.3s)
-- Generating done (2.2s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
apt update
apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
# 进入mysql包解压的目录
cd mysql-8.4.5/
# 执行cmake
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
进入mysql包解压的目录:
cd mysql-8.4.5/
安装cmake包:
apt update
apt install -y cmake
执行cmake:
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
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!
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeError.log".
安装g++包:
apt install -y g++
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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".
安装libssl-dev包:
apt install -y libssl-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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".
安装libncurses5-dev包:
apt install -y libncurses5-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
Cannot find pkg-config. You need to install the required package: # 找不到 pkg-config。您需要安装所需的软件包:
Debian/Ubuntu: apt install pkg-config
RedHat/Fedora/Oracle Linux: yum install pkg-config
SuSE: zypper install pkg-config
Call Stack (most recent call first):
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2097 (MYSQL_CHECK_RPC)
CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.22/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
cmake/pkg-config.cmake:37 (FIND_PACKAGE)
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
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".
安装pkg-config包:
apt install -y pkg-config
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (24.3s)
-- Generating done (2.2s)
-- Build files have been written to: /usr/local/src/mysql-8.4.5
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
apt update
apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config
# 进入mysql包解压的目录
cd mysql-8.4.5/
# 执行cmake
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
进入mysql包解压的目录:
cd mysql-8.4.5/
安装cmake包:
apt update
apt install -y cmake
执行cmake:
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
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!
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeError.log".
安装g++包:
apt install -y g++
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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".
See also "/usr/local/src/mysql-8.4.5/CMakeFiles/CMakeError.log".
安装gcc-11和g++-11包:
# 添加新的PPA源:Ubuntu的官方源可能不包含最新的gcc和g++版本,你需要添加一个提供这些版本的PPA源
root@ubuntu2004:/usr/local/src/mysql-8.4.5# add-apt-repository ppa:ubuntu-toolchain-r/test
Toolchain test builds; see https://wiki.ubuntu.com/ToolChain
More info: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
Press [ENTER] to continue or Ctrl-c to cancel adding it. # 在这里按回车键继续
Hit:1 https://mirrors.tencent.com/ubuntu bionic InRelease
Hit:2 https://mirrors.tencent.com/ubuntu bionic-updates InRelease
Hit:3 https://mirrors.tencent.com/ubuntu bionic-backports InRelease
Hit:4 https://mirrors.tencent.com/ubuntu bionic-security InRelease
Get:5 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease [21.5 kB]
Get:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main i386 Packages [49.6 kB]
Get:7 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main amd64 Packages [52.2 kB]
Get:8 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main Translation-en [12.6 kB]
Fetched 136 kB in 4s (38.6 kB/s)
Reading package lists... Done
# 替换地址为国内镜像站
sed -i.bak 's@http://ppa.launchpad.net@https://launchpad.proxy.ustclug.org@g' /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-bionic.list
apt update
apt install -y gcc-11 g++-11
# 设置gcc和g++的默认版本:
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 60 --slave /usr/bin/g++ g++ /usr/bin/g++-11
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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".
安装libssl-dev包:
apt install -y libssl-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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".
安装libncurses5-dev包:
apt install -y libncurses5-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
Cannot find pkg-config. You need to install the required package: # 找不到 pkg-config。您需要安装所需的软件包:
Debian/Ubuntu: apt install pkg-config
RedHat/Fedora/Oracle Linux: yum install pkg-config
SuSE: zypper install pkg-config
Call Stack (most recent call first):
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2097 (MYSQL_CHECK_RPC)
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:41 (find_package_handle_standard_args)
cmake/pkg-config.cmake:37 (FIND_PACKAGE)
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
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".
安装pkg-config包:
apt install -y pkg-config
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-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
总结编译过程:
# 添加新的PPA源
add-apt-repository ppa:ubuntu-toolchain-r/test
# 替换地址为国内镜像站
sed -i.bak 's@http://ppa.launchpad.net@https://launchpad.proxy.ustclug.org@g' /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-bionic.list
# 安装依赖包
apt update
apt install -y cmake gcc-11 g++-11 libssl-dev libncurses5-dev pkg-config
# 设置gcc和g++的默认版本:
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 60 --slave /usr/bin/g++ g++ /usr/bin/g++-11
# 进入mysql包解压的目录
cd mysql-8.4.5/
# 执行cmake
cmake \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/apps/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysql/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。