编译运行miniob最小数据库系统

minibo是一个用于教学的小型数据库系统,麻雀虽小五脏俱全,该项目包含了数据库的核心内容,并且代码量小,适合新手学习,最近由于需要学习c/cpp,因此打算从这个项目入手,本文就介绍编译运行miniob的方法。

下载源代码

首先去github下载源代码

GitHub - oceanbase/miniob: MiniOB is one mini database, helping developers to learn how database works.

如果github下载很慢可以去gitee上下载

miniob: fork from miniob (gitee.com)

编译的时候最好在linux环境下进行编译,我使用centos虚拟机进行编译(后来换成ubuntu子系统了),安装子系统的教程可以参考这篇博客

(8条消息) Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 )_win10 linux_凌云飞鸿的博客-CSDN博客

linux编译环境初始化

在进行编译的时候我们需要初始化我们的编译环境,miniob的官方教程可以在下面的网址查看

MiniOB 简介 - MiniOB (oceanbase.github.io)

首先需要安装cmake,网上很多教程都是让你去官网下载,官网下载就是从github中下载,如果上不了github可以到看看下面的博客,博客中提供了百度网盘下载地址

(9条消息) centos7安装CMake3.21(离线安装)_centos 离线安装make_zhongxj183的博客-CSDN博客

按照博客里的顺序,我没有安装gcc(因为之前看系统里面已经有gcc了),而是先安装openssl,然后再安装cmake,然后就报错了

我们需要重新安装gcc,可能是系统自带的gcc不支持c++的编译,解决方法在下面这篇博客里

(9条消息) Cannot find a C++ compiler that supports both C++11 and the specified C++ flags. Please specify one_can not find a c++_饥饿小猪的博客-CSDN博客先安装gcc-c++

yum install -y gcc gcc-c++ 

然后再执行

./configure 

如果下载很慢可以更换一下yum源,方法在下面的博客里

(9条消息) Centos7更换yum国内源教程_centos7更换yum源_tianles的博客-CSDN博客

接着再次尝试安装cmake的时候发现找不到openssl,刚刚明明已经安装过了,不过不起作用

使用yum再安装一次

yum install openssl-devel 

然后再安装cmake就行了,编译的过程挺久的,编译完后查看cmake的版本,如果正常显示则表示安装成功

官方教程中说,建议gcc版本要在8.3以上,因此我们需要更新gcc

(9条消息) CentOS升级gcc到高版本(全部版本详细过程)_乞力马扎罗の黎明的博客-CSDN博客

我使用下面的命令进行更新

yum -y install centos-release-scl 
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 

scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

此时查看gcc版本会发现已经更新到9.3.x了

至此准备工作都完成了

编译代码

按照官方教程,切换到项目根目录,然后执行

bash build.sh init 

此时发现系统没有安装git

我们需要安装git,执行下面的命令进行安装

yum install -y git

接着安装的时候发现需要安装几个依赖库,安装依赖库的教程可以在oceanbase的官网找到,由于github访问较慢,所以我直接到gitee上下载

1.5 MiniOB 开发调试环境搭建-开发者入门教程-OceanBase文档中心-分布式数据库使用文档

安装jsoncpp

cd /data/miniob-main

git submodule add https://gitee.com/get-code-from-github/jsoncpp.git deps/jsoncpp

cd deps/jsoncpp

mkdir build

cd build

cmake -DJSONCPP_WITH_TESTS=OFF -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF ..

make

make install

安装libevent

cd /data/miniob-main

git submodule add https://gitee.com/zwwlyy/libevent.git deps/libevent
cd deps/libevent

mkdir build

cd build

cmake .. -DEVENT__DISABLE_OPENSSL=ON

make

make install 

安装googletest

cd /data/miniob-main

git submodule add https://gitee.com/xinzhige/googletest.git deps/googletest
cd deps/googletest

mkdir build

cd build

cmake ..

make

make install

至此依赖库都已经安装完毕,可以开始编译项目

cd /data/miniob-main

mkdir build

cd build

cmake .. -DEBUG=ON

编译完后发现还是报错,后来就放弃centos,转而使用WSL在ubuntu20上进行编译了。

ubuntu上编译比centos简单很多,比如cmake和gcc,g++等等工具都可以直接使用apt install来安装。

需要在ubuntu上将之前的jsoncpp,googletest和libevent三个库重新安装一遍,除此之外,我们还需要安装MbedTLS库

cd /data/miniob-main

git submodule add https://gitee.com/kevinjen1031/mbedtls.git deps/MbedTLS
cd deps/MbedTLS

mkdir build

cd build

cmake ..

make

make install

然后还需要安装openssl库

apt-get install libssl-dev

然后还需要安装benchmark

cd /data/miniob-main

git submodule add https://gitee.com/TaylorZhang/benchmark.git deps/benchmark

cd deps/benchmark

mkdir build

cd build

// 将之前下载的 deps/googletest 复制到 deps/benchmark 文件夹下 

cmake .. -DCMAKE_BUILD_TYPE=RELEASE

make

make install

至此环境终于全部安装完毕,可以开始编译miniob了

cd /data/miniob-main

bash build.sh

此时又给我来了一个这样的报错

我定位到是代码中的这一句话有问题

我没读过代码,所以直接先将这一句话注释掉,然后编译成功,暂时先这么处理吧。

运行代码

编译完成后可以在bin目录下看到可执行文件

官方的教程在这里

如何运行 - MiniOB (oceanbase.github.io)

我们以最简单的方式运行

 ./observer -f ../../etc/observer.ini -P cli

我们可以通过命令行的方式和数据库进行交互,我们可以简单测试一下 CREATE TBALE 和 INSERT 语句。

CREATE TABLE t_date(id int, num int, price float, addr char, birthday date);

insert into t_basic values(1,1, 'a', 1.0);

insert into t_basic values(2,2, 'b', 2.0);

select * from t_basic;

这个数据库好像只能执行简单的sql语句,现在就算编译完成了,后续可以开始学习源代码啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android adb shell 查看App内存(java堆内存/vss虚拟内存/详细的内存状况/内存快照hprof)和系统可用内存

1.adb shell 获取app 进程的pid adb shell "ps|grep com.xxx包名"根据某个渠道包,去查询对应的pid,如下所示: 2.通过adb shell 查看设备的java dalvik 堆内存的最大值 执行命令行: adb shell getprop dalvik.vm.h…

iOS开发-实现获取下载主题配置动态切换主题

iOS开发-实现获取下载主题配置动态切换主题 iOS开发-实现获取下载主题配置更切换主题,主要是通过请求服务端配置的主题配置、下载主题、解压保存到本地。通知界面获取对应的图片及颜色等。 比如新年主题风格,常见的背景显示红色氛围图片、tabbar显示新…

REST API的基础:HTTP

在本文中,我们将深入探讨万维网数据通信的基础 - HTTP。 什么是超文本? HTTP(超文本传输协议)的命名源于“超文本”。 那么,什么是超文本? 想象一下由超链接组成的文本、图像和视频的混合物。这些链接充当我…

Restful的详细介绍~

RESTFUL简介: Restful是我们看待服务器的一种方式,我们都知道Java一切皆对象,因此在Java中,我们可以将所有的内容都看成对象,而在这里,RESTFUL是我们看待服务器的一种方式,我们可将服务器中的所…

【C++】多态的实现及其底层原理

个人主页:🍝在肯德基吃麻辣烫 我的gitee:gitee仓库 分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处。 文章目录 前言一、什么是多态?二、多态的构成条件2.1什么是虚函数?2.2虚函数的重写2…

pycharm 远程连接服务器并且debug, 支持torch.distributed.launch debug

未经允许,本文不得转载,vx:837007389 文章目录 step1:下载专业版本的pycharmstep2 配置自动同步文件夹,即远程的工程文件和本地同步2.1 Tools -> Deployment -> configuration2.2 设置同步文件夹2.3 同步服务器…

【深度学习】WaveMix: A Resource-efficient Neural Network for Image Analysis 论文

论文:https://arxiv.org/abs/2205.14375 代码:https://github.com/pranavphoenix/WaveMix 文章目录 ABSTRACTIntroductionBackground and Related WorksWaveMix Architectural FrameworkOverall architectureWaveMix block Experiments and ResultsTasks…

机器学习深度学习——Dropout

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——权重衰减 📚订阅专栏:机器学习&&深度学习 希望文章对你们有所帮助 Drop…

centos7安装nginx

一、下载安装包 方式一:官网下载 到nginx官网下载 然后上传到linux 服务器 方式二: wget 下载 wget http://nginx.org/download/nginx-1.22.0.tar.gz二、安装nginx 先安装相关依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 创建…

使用vim-cmd工具给ESXi虚机定期打快照

VMware虚拟化 - 建设篇 第四章 使用vim-cmd工具给ESXi虚机定期打快照 VMware虚拟化 - 建设篇系列文章回顾使用vim-cmd工具给ESXi虚机定期打快照前言前提条件ESXi新增执行快照备份的sh脚本ESXi添加crond任务并使其生效ESXi指定部分虚拟机不执行定期快照(附加)虚拟机自定义属性…

ChatGPT有几个版本,哪个版本最强,如何选择适合自己的?

​ChatGPT就像内容生产界的瑞士军刀。它可以是数学导师、治疗师、职业顾问、编程助手,甚至是旅行指南。只要你知道如何让它做你想做的事,ChatGPT几乎可以提供你要的任何东西。 但重要的是,你知道哪个版本的ChatGPT最能满足你的需求吗&#x…

Windows 11 下 OpenFace 2.2.0 的安装

写在前面 最近需要做关于面部的东西,所以需要使用到OpenFace这个工具,本文仅用来记录本人安装过程以供后续复现,如果可以帮助到读者也是非常荣幸。 安装过程 不编译直接使用 这种方法可以直接从官方下载下来编译好的exe以及gui进行使用&a…

在 “小小容器” WasmEdge 里运行小小羊驼 llama 2

昨天,特斯拉前 AI 总监、OpenAI 联合创始人 Andrej Karpathy 开源了 llama2.c 。 只用 500 行纯 C 语言就能训练和推理 llama 2 模型的框架,没有任何繁杂的 python 依赖。这个项目一推出就受到大家的追捧,24 小时内 GitHub 收获 4000 颗星&am…

KY222 打印日期+KY111日期差值

一、KY222题目 二、代码 #include <climits> #include <iostream> using namespace std; class Date{public:Date(int year 1,int month 2,int day 3){_year year;_month month;_day day;}int GetDay(int year ,int month);void Define(int n);public:int _yea…

查看进程方式

目录 ps top uptime pstree ps 查看静态的进程统计信息 top 实时显示系统中各个进程的资源占用情况 第一行 top - 17:00:23 up 15 min, 1 user, load average: 1.05, 1.22, 0.98 17:00:23————当前时间 up 15 min————系统运行时间 1 user————当前登录用户数…

陪诊小程序软件|陪诊系统定制|医院陪诊小程序

开发一个陪诊小程序需要投入一定的费用&#xff0c;具体金额会因项目的复杂程度、功能需求和推广政策而有所差异在投入资金之前&#xff0c;建议进行市场调研和需求分析&#xff0c;制定出合理的预算&#xff0c;并选择专业的开发团队进行合作&#xff0c;那么开发陪诊小程序需…

2023大同首届信息技术产业峰会举行,共话数字经济新未来

7月28日&#xff0c;“聚势而强共领信创”2023大同首届信息技术产业峰会圆满举行。本次峰会由中共大同市委、大同市人民政府主办&#xff0c;中国高科技产业化研究会国际交流合作中心、山西省信创协会协办&#xff0c;中共大同市云冈区委、大同市云冈区人民政府、诚迈科技&…

密码学的一些常识

1&#xff0c;对称密码、公钥密码、消息认证、数字签名的对比 对称密码公钥密码发送者共享秘钥加密公钥加密接收者共享秘钥解密私钥解密秘钥配送问题存在不存在&#xff0c;但需要CA认证公钥机密性√√ 消息认证数字签名发送者共享秘钥计算MAC使用私钥对文本HASH值做签名接收者…

JavaScript学习 -- SM3算法基本原理

SM3算法是一种由国家密码管理局发布的哈希算法&#xff0c;被广泛用于数字签名和消息认证等应用中。在JavaScript中&#xff0c;我们可以使用第三方库来计算数据的SM3哈希值。本篇文章将介绍SM3算法的基本原理和相关技术&#xff0c;并提供一些实例来演示如何在JavaScript中使用…

DAY14_FilterListenerAjaxAxiosJsonfastjson综合案例-axios和html交互

目录 1 Filter1.1 Filter概述1.2 Filter快速入门1.2.1 开发步骤1.2.2 代码演示 1.3 Filter执行流程1.4 Filter拦截路径配置1.5 过滤器链1.5.1 概述1.5.2 代码演示1.5.3 问题 1.6 案例1.6.1 需求1.6.2 分析1.6.3 代码实现1.6.3.1 创建Filter1.6.3.2 编写逻辑代码1.6.3.3 测试并抛…