一 绪论
本篇文章仅用于分享,非官方教程,仅供参考。欢迎大佬指正。
miniob环境配置有两种方法:需要Linux系统上配置环境,或者在Windows系统上先下载docker。这里我选择第一种方法安装Linux虚拟机然后配置miniob的环境。
二 安装步骤以及可能的问题
1下载vmware配置Linux虚拟机
安装centos7可以自行发挥,这里就不过多赘述。不会的可以搜一搜其他教程。
2升级gcc,官方要求gcc版本至少8.3往上,这里使用的是gcc11.2。
以root用户登入虚拟机,方便后续操作
yum -y install centos-release-scl
yum -y install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
此时新的gcc以及安装好了,但是还没有加载需要:
scl enable devtoolset-11 bash //重新加载环境 (暂时,切换 用户后需要重新执行)
echo "source /opt/rh/devtoolset-11/enable" >>/etc/profile //永久加载新的gcc(需重启生效)
之后我们在命令行输入,查看版本是否为11.2
gcc --version
g++ --version
3下载cmake(一个执行编译过程的软件,优点可以跨平台,兼容性很好)。版本要求:3.10往上 ,官方教程使用3.24,区间内即可。
安装wget(以get方式请求下载软件)
yum install wget
在/opt目录下创建一个文件夹用来存放临时下载文件
mkdir /opt/software
cd /opt/software
wget https://cmake.org/files/v3.20/cmake-3.20.5.tar.gz
在/opt目录下创建一个文件夹用来存放解压后的软件
mkdir /opt/module
tar -zxvf /opt/software/cmake-3.20.5.tar.gz -C /opt/module
进入解压后的cmake目录,编译cmake,过程可能会很长耐心等待。
cd /opt/module/cmake-3.20.5
./bootstrap && make -j4 && sudo make install
如果有报错
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) CMake Error at Utilities/cmcurl/CMakeLists.txt:511 (message): Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.
错误信息表明CMake在尝试配置项目时无法找到OpenSSL库。CMake需要OpenSSL库来编译某些依赖于它的组件。直接下载
yum install openssl-devel
执行cmake --version 查看是否安装成功
4按照教程配置miniob环境
安装拉取工具git,如果使用wget获取到的是页面源代码。
yum install git
下载源码 要切换到/opt/module目录下
git clone https://github.com/oceanbase/miniob.git
若请求失败,手动设置代理,关闭http,关闭set//个人猜测是:只能使用ssh的方式访问才能克隆
git config --global http.proxy http://127.0.0.1:1080
git config --global http.proxy http://127.0.0.1:1080
git config --global --unset http.proxy
git config --global --unset https.proxy
5编译miniob
如果是第一次在这个环境上编译miniob,需要安装一些miniob的依赖库,执行下面的命令即可安装:
bash build.sh init
脚本将自动拉取依赖库(可以参考 .gitmodules) 然后编译安装到系统目录。
bash build.sh debug --make (命令不要写错,可能会报错)
如果编译时出现 Thread实例失败,去cmakeError.log,查看,下载对应的依赖,重新编译。
报错:/opt/rh/devtoolset-11/root/usr/libexec/gcc/x86_64-redhat-linux/11/ld: 找不到 libasan_preinit.o: 没有那个文件或目录
/opt/rh/devtoolset-11/root/usr/libexec/gcc/x86_64-redhat-linux/11/ld: 找不到 -lasan
缺少libasan包,直接install安装
yum search libasan
找到对应版本下载
yum install devtoolset-11-libasan-devel.x86_64
记得重新执行build.sh之前把,原先的build_debug目录,以及软连接文件build删掉
编译完成进入到build_debug目录,运行miniob的内核
./bin/observer -f ../etc/observer.ini -P cli
6调试
下载调试工具gdb
yum install gdb
首先启动miniob,然后新开一个终端-p使用端口号调试,pidof查看程序的端口号,不是单引号。
gdb -p `pidof observer`
这里简单介绍一下,如何调试
b do_select //b->break,do_select->miniob内部的接口
在miniob的窗口里输入一个select语句
n //下一步
c //跳出函数
7总结
报错了,不要慌张,多试几遍,说不定哪一遍就突然通过了。
本篇文章就是这么来的,编译那里卡了我一周左右,换了Ubuntu,centos8,好几个版本,最后才搞出来。
官方链接: