最近安装mysql8.0.17遇到一些问题,以下是查找到比较齐全的mysql编译安装错误集合,记录下来方便查看
1、does not appear to contain CMakeLists.txt.
原因:mysql下载的源码包不对
解决方法:根据自己的情况下载正确的mysql源码包,我是下载这个
2、配置报错:Please install the appropriate openssl developer package.
解决方法:安装openssl-devel
yum -y install openssl-devel
3、配置报错:Could NOT find Curses
解决方法:安装ncurses-devel
yum -y install ncurses-devel
4、编译报错:Please do not build in-source. Out-of source builds are highly
原因:是它建议你不要构建源代码。
解决办法:在配置的时候加入字段:-DFORCE_INSOURCE_BUILD=1
5、配置报错:The C compiler identification is unknown
解决办法:做一个gcc的软链接。
ln -s /usr/local/gcc/bin/gcc /usr/bin/cc
6、编译报错:/usr/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found
因为libstdc++.so.6的库是使用的以前的老库。
解决办法:修改软链接
find / -name libstdc++.so.6
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6_old
ln -s /usr/local/gcc/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6
7、编译报错:'SYS_gettid' has not been declared in this scope
解决方法:在该文件上添加一个头文件。
vim /usr/local/src/mysql-8.0.16/storage/innobase/buf/buf0buf.cc
#在第一行添加
#include "sys/syscall.h"
8、编译报错:‘os_compare_and_swap_thread_id’ Has not been declared in this scope
解决办法:修改报错文件内容,mysql-8.0.16/storage/innobase/lock/有4个文件,
此处可能出现1~3文件个这样的错误,方法一样
vim /usr/local/src/mysql-8.0.16/storage/innobase/lock/lock0lock.cc
#将 “os_compare_and_swap_thread_id” 修改为
os_compare_and_swap_lint
9、编译报错:/usr/bin/ar: ../../archive_output_directory/libz.a
解决方法:重新配置编译
make clean
cmake .....(你的配置参数)
make
10、编译报错:_DIAGASSERT、libedit_fgetln、__arraycount、libedit_fgetln an undefined reference
解决方法:在各文件里加入sys.h头文件
#在文件中加入
#include <sys.h>
11、mysql登录报错:Segmentation fault
解决办法:找到源码中terminal.c文件,修改如下图,然后重新编译。
12、c++:Internal error:killed
原因:centos主机小于2GB内存的, 会在make编译到45、63%左右时会报错, 这是内存不足所致,我编译是在66%时错误
解决:设置2G交换分区来用下 :
# dd if=/dev/zero of=/swapfile bs=1k count=2048000 --获取要增加的2G的SWAP文件块
# mkswap /swapfile -- 创建SWAP文件
# swapon /swapfile -- 激活SWAP文件
# swapon -s -- 查看SWAP信息是否正确
# echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab -- 添加到fstab文件中让系统引导时自动启动
注意, swapfile文件的路径在/var/下
编译完后, 如果不想要交换分区了, 可以删除:
# swapoff /swapfile
# rm -fr /swapfile