目录
以下编译调试过程均follow官网给的流程
miniob/docs/src/dev-env/how_to_dev_miniob_by_vscode.md at main · oceanbase/miniob · GitHub
一、虚拟机选择
一开始用了24版本,一打开就特别卡,遂删
第二次用了20.04版本,终端不能复制粘贴,老连不上网,懒得弄,删!
最后选择了我的vmplayer里面早就下好了的ubuntu14.04版本
二、把github里的代码拷贝到本地
(1)安装git命令
sudo apt-get install git
(2)ubuntu里创建好保存代码的目录
cd Documents
sudo mkdir projects
cd projects
sudo mkdir demo
(3)在demo目录下输入git clone命令
git clone https://github.com/oceanbase/miniob.git
github的链接在这复制:
拷贝成功:
三、流程
(1)编译工具版本要求
MiniOB 需要使用:
- cmake 版本 >= 3.13
- gcc/clang gcc建议8.3以上,编译器需要支持c++20新标准
- flex (2.5+), bison (3.7+) 用于生成词法语法分析代码
1、安装cmake
直接跟着这篇做就可以了,在官网上找到3.24.1这个版本,接着跟着下面这篇一步一步做,命令都不用改。(用官网新的版本的话就不用bootstrap)
检查当前版本:
2、安装gcc
自己的gcc版本太低了,要更新,这篇讲的很好,一下就成功了
检查当前版本:
3、安装flex
终端输入命令:
apt-get install flex
检查当前版本,下载好的版本符合我们miniob的要求
4、安装bison
apt-get的版本太老了,要更高的版本
于是自己写了一篇博客,如下
检查当前版本:
(2)搭建
1、安装labevent
在demo目录下进行git仓库初始化:
git init
再尝试添加libevent子模块:
git submodule add https://github.com/libevent/libevent
遇到了报错:
Cloning into 'libevent'... fatal: unable to access 'https://github.com/libevent/libevent/': gnutls_handshake() failed: A TLS packet with unexpected length was received. Clone of 'https://github.com/libevent/libevent' into submodule path 'libevent' failed
解决方法:
1、先检查网络连接是否正常
2、更新 Git 和 SSL/TLS 库。通过以下命令来更新我的系统和软件:
sudo apt-get update
sudo apt-get upgrade
再次进行添加就成功了
git submodule add https://github.com/libevent/libevent
然后打开libevent目录:
cd libevent
切换版本:
git checkout release-2.1.12-stable
在 Git 中使用 git checkout
命令检出一个标签后,将进入所谓的“分离 HEAD 状态”(detached HEAD state)。这意味着 HEAD,即当前工作的指针,直接指向一个特定的提交而不是分支的最新提交。
在分离 HEAD 状态时,可以自由地探索代码、做实验性的更改和提交,而这些更改不会影响到任何的主分支,除非要将这些更改并入一个分支。这种状态特别适用于需要临时回溯到旧版本或者试验性地修改代码而不影响主线开发的场景。
接下来是编译部分
进入labevent的目录
创建build目录:
mkdir build
cd build
在build目录下面执行cmake命令:
cmake .. -DEVENT__DISABLE_OPENSSL=ON
执行make编译,可以-j后加一个数字进行并行编译,也可以不加数字,让make自己选一个合适的参数执行:
make -j 10
安装编译好的东西:
sudo make install
2、安装googletest
demo目录下输入命令:
git submodule add https://github.com/google/googletest
cd googletest
mkdir build
cd build
cmake ..
make
sudo make install
3、安装jsoncpp
demo目录下输入命令:
git submodule add https://github.com/open-source-parsers/jsoncpp.git
cd jsoncpp
mkdir build
cd build
cmake -DJSONCPP_WITH_TESTS=OFF -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF ..
make
sudo make install
晚上用git极其不稳定,可以尝试镜像等方法或者多试几次
4、编译miniob
miniob目录下输入命令
mkdir build
cd build
cmake ..
make
5、在build目录下启用observer
miniob/build目录下输入命令:
./bin/observer -f ../etc/observer.ini
成功启动服务端,端口是6789
6、启用客户端
miniob/build目录下输入命令:
./bin/obclient
可以看到连接成功了
参考视频: