【RocksDB】Ubuntu18.04下编译rocksdb

2023-11-06

最近的新项目是NewSQL,底层存储引擎是rocksdb,于是在Ubuntu下编译了一下,下面是编译过程:

首先安装依赖的包以及组件:

安装gcc、g++及make

sudo apt-get install build-essential

安装gflags

sudo apt-get install libgflags-dev

安装snappy

sudo apt-get install libsnappy-dev

安装zlib

sudo apt-get install zlib1g-dev

安装bzip2

sudo apt-get install libbz2-dev

安装lz4

sudo apt-get install liblz4-dev

安装zstandard

sudo apt-get install libzstd-dev

安装cmake

官网下载地址:https://cmake.org/download/
在这里插入图片描述

wget https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0.tar.gz

解压:

tar -zxvf cmake-3.17.0.tar.gz

执行:

cd cmake-3.17.0
./bootstrap
make -j8
sudo make install

查看版本号:

cmake --version

结果如下即代表安装成功。
在这里插入图片描述

编译rocksdb

rocksdb github地址:https://github.com/facebook/rocksdb
1.下载rocksdb源码并解压

wget https://github.com/facebook/rocksdb/archive/master.zip
unzip master.zip
cd rocksdb-master
#生成静态库
make static_lib
#生成动态库
make shared_lib

2.复制.h文件到/usr/lib中。

cp -r include/* /usr/include
sudo cp librocksdb.so.6.9.0 /usr/lib
sudo ln -s /usr/lib/librocksdb.so.6.9.0 /usr/lib/librocksdb.so.6.9
sudo ln -s /usr/lib/librocksdb.so.6.9.0 /usr/lib/librocksdb.so.6
sudo ln -s /usr/lib/librocksdb.so.6.9.0 /usr/lib/librocksdb.so

3.设置环境变量。

vi /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/lib
source /etc/profile

4.创建文件夹:

mkdir /tmp/rocksdbResult

5.编写测试文件rocksdbtest.cpp:

vi rocksdbtest.cpp
#include <cstdio>
#include <string>
#include "rocksdb/db.h"
#include "rocksdb/slice.h"
#include "rocksdb/options.h"
using namespace std;
using namespace rocksdb;
const std::string PATH = "/tmp/rocksdbResult";
int main(){
    DB* db;
    Options options;
    options.create_if_missing = true;
    Status status = DB::Open(options, PATH, &db);
    assert(status.ok());
    Slice key("foo");
    Slice value("bar");
    std::string get_value;
    status = db->Put(WriteOptions(), key, value);
    if(status.ok()){
        status = db->Get(ReadOptions(), key, &get_value);
        if(status.ok()){
            printf("get %s\n", get_value.c_str());
            printf("get success\n"); 
        }else{
            printf("get failed\n"); 
        }
    }else{
        printf("put failed\n");
    }
    delete db;
}

6.编译运行该文件:

g++ -std=c++11 -o rocksdbtest rocksdbtest.cpp -lpthread -lrocksdb -ldl
./rocksdbtest

结果如下代表编译测试成功:
在这里插入图片描述

Clion编译

工欲善其事,必先利其器。一个好的IDE能够为我们的开发提升很高的效率,这里我选择Clion作为rocksdb开发的IDE。CLion是Jetbrains公司旗下新推出的一款专为开发C/C++所设计的跨平台IDE。因为Clion依赖于java,所以我们先装openJDK。

安装openJDK

sudo apt-get install openjdk-8-jdk

安装Clion

下载地址:https://www.jetbrains.com/clion/download/
执行下列命令:

wget https://download-cf.jetbrains.com/cpp/CLion-2019.3.5.tar.gz
tar -zxvf CLion-2019.3.5.tar.gz
cd CLion-2019.3.5/bin
./clion.sh

build rocksdb

点击New CMake Project from Sources,选择rocksdb-master文件夹:
在这里插入图片描述
点击Build -> Build Project,等待编译完成,如下即为成功:
在这里插入图片描述

测试rocksdbtest

在CMakeLists中加入代码:
在这里插入图片描述
点击reload changes,选择rocksdb_rocksdbtest,可运行或者debug调试。
在这里插入图片描述
写这篇文章主要是为了记录一下Ubuntu下编译rocksdb的过程,之前在网上没看到介绍比较详细的文章。这是我第一次接触rocksdb,之后也争取抽时间记录一下rocksdb学习过程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【RocksDB】Ubuntu18.04下编译rocksdb 的相关文章

  • Azure Nvidia 中的 apt-update 出现公钥错误

    我在 AZURE 上启动了 NVIDIA VM 并尝试使用进行更新sudo apt update但给出错误 Hit 2 http azure archive ubuntu com ubuntu focal InRelease Hit 3 h
  • /etc/php5/conf.d 文件夹中的 .ini 文件有什么用?

    我知道 ini 文件位于 etc php5 cli与 PHP 的 CLI 使用有关 文件位于 etc php5 fpm是关于 PHP 的 FastCGI FPM 方面 但是位于以下位置的 ini 文件又如何呢 etc php5 conf d
  • 保护一个保存 MySQL 数据库的简单 Linux 服务器?

    这是一个初学者问题 但我浏览了该网站上的许多问题 但没有找到简单直接的答案 我正在设置一个运行 Ubuntu 的 Linux 服务器来存储 MySQL 数据库 该服务器尽可能安全非常重要 据我所知 我主要担心的是传入的 DoS DDoS 攻
  • 在ubuntu 18.04上安装python 2.7

    有没有办法在 Ubuntu 18 04 上安装 Python 2 7 我尝试了这个命令 但它不起作用 sudo apt install python minimal 有没有办法手动安装 我尝试使用 python 2 7 作为不支持 pyth
  • Ubuntu 16.04 中 kubeadm join 命令每次都会超时

    我正在使用 Ubuntu 16 04 Xenial 但我遇到了一个问题kubeadm加入时nodes to my master 在加入一个node to my master 我不断遇到超时问题 discovery Failed to req
  • http://localhost:50070/ 的 hadoop Web UI 不起作用

    命令 jps 显示以下详细信息 第5144章 5464 节点管理器 5307 资源管理器 5800 Jps 显然namenode和datanode丢失了 网络用户界面位于http 本地主机 50070 http localhost 5007
  • pygraphviz,导入错误:未定义的符号:Agundirected

    import pygraphviz Traceback most recent call last File
  • 如何在维护数据的同时升级 docker 容器中的 postgres? 10.3 到最新的 10.x 或 12.x

    我的生产和本地主机中有一个 10 3 postgres docker 容器 在之前的一个question https stackoverflow com a 62789347 80353 我必须恢复在 10 5 中存档的转储 感谢您的回答
  • 有没有人在 Ubuntu 16.04 LTS 上安装 QGIS

    按照以下网址提供的说明进行操作 这一页 http www qgis org en site forusers alldownloads html并收到以下错误 以下软件包具有未满足的依赖关系 python qgis Depends pyth
  • 将 Docker 与具有 Node-gyp 依赖项的 Nodejs 一起使用

    我计划使用 Docker 部署 node js 应用程序 该应用程序有几个需要node gyp的依赖项 Node gyp 根据交付平台上的编译库构建这些模块 例如 canvas lwip qrcode 根据我的经验 这些构建可能高度依赖于操
  • libicui18n.so.52:无法打开共享对象文件

    我一直在使用 libicu 来检测在 docker ubuntu 内部运行的节点应用程序中的字符集 这是通过模块完成的节点 icu 字符集检测器 https github com mooz node icu charset detector
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • apt-get install tzdata 非交互式

    当我尝试 apt get install y tzdata 将显示用于选择时区的命令行选项 我试图在脚本中使用它来进行一些设置 如何在没有用户输入的情况下使 apt get 运行 我知道重新配置 tzdata 我可以做 echo Ameri
  • 未找到命令“ember”

    看来我搞砸了 ember cli 安装 我已经使用 sudo 安装了 npm 但是在阅读了 npm 上 ember cli 和 sudo 的一些问题后 我按照此处的说明卸载并重新安装https gist github com isaacs
  • 我需要启用哪些权限才能使 Docker 卷正常工作?

    假设我有一个保存一些数据的 Docker 容器 我希望这些数据能够持续存在 如果容器被停止 删除 升级等 我仍然希望数据位于主机操作系统文件系统上的可访问位置 目前 我的解决方案是创建一个目录 srv service name在我的主机上
  • 如何在不反编译的情况下更改已编译的.class文件?

    我想更改 class 文件方法 我安装 JD Eclipse Decompiler 并打开 class 文件 我添加了一些代码并保存 class 文件 但是 class 文件没有改变 我不知道如何使用反编译器 如果可能的话 如何在不使用反编
  • SSH 无法对 [email protected] 进行身份验证

    最近 我在 Github com 上注册了一个免费计划 我按照他们的说明生成 ssh 密钥以添加到我的帐户 然而 当我尝试ssh v email protected cdn cgi l email protection 我收到此错误 deb
  • 让 Rails 生产在端口 80 上运行

    我正在尝试让我的 Rails 应用程序在生产模式下运行 但遇到了一些困难 我正在使用 Passenger 和 apache 并运行 Ubuntu 12 04 我已经配置和创建了生产数据库 并设置了乘客 状态如下 rvmsudo passen
  • 交叉编译armv5,但它创建v7二进制文件

    我设法为arm926ej s创建了一个目标文件我在 qemu 上使用 Debian Arm arm linux gnueabi gcc 4 4 static O c mcpu arm926ej s hello c o hello root
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如

随机推荐

  • LeetCode 260. 只出现一次的数字 III

    题目链接 https leetcode cn problems single number iii 思路如下 从头到尾依次异或数组中的每一个数字 那么最终得到的结果就是两个只出现一次的数字的异或结果 因为其他数字都出现了两次 在异或中全部抵
  • javascript求任意一组数的平均值

    代码 function getAvg 任意一组数求平均值 var sum 0 len arguments length i arguments是js函数中内置的类数组 它能像数组一样使用下标进行访问元素 for i 0 i
  • vue怎么改logo_vue项目添加网页logo

    网上关于为vue项目添加网页logo的文章很多 步骤很简单 但是博主还是踩了坑 特此记录一下 先上效果 1 首先 要为网页添加logo我们需要一张ico格式的图标 可以用网上的在线转换工具 将 jpg png 格式的图片转为 ico 格式
  • 防抖与节流函数

    文章目录 前言 节流函数代码 防抖函数代码 前言 防抖与节流是日常开发中常用的两个函数 目的都在于控制事件触发频率降低性能损耗和代码错误 节流 点击事件即开始计时 计时时间内无论触发多少次事件 都只执行触发计时的那个事件 防抖 点击事件即开
  • Python: SQLAlchemy 增、删、改、查

    目录 一 完整代码 1 1 代码 1 2 运行结果 二 增删改查 2 1 增加一行记录 2 2 修改一行记录 2 3 查询一行记录 2 4 删除一行记录 一 完整代码 1 1 代码 import uuid import datetime i
  • 一个关于缓存的问题

    网上查了一下 关于生命周期的话题 如果是类的成员变量 则其声明周期贯穿整个其对象的生命周期 如果是方法内的变量 局部变量 则仅仅在该方法内有效 出了方法体则无效 失去意义 static是修饰静态代码块或者成员变量或者方法的 其方法或者代码块
  • 介绍一个十分牛逼的GitHub看代码神器,零基础必学会的操作。

    给大家介绍一个非常实用的工具 有了它 我们可以在几秒之内用 VS Code 打开 GitHub 上的任意一个 Repo 无需 Clone 速度飞快 用法也十分简单而且好记 下面给大家介绍下 介绍 比如这里是 Scrapy 的仓库 https
  • 【線段樹】Mayor's posters

    Description The citizens of Bytetown AB could not stand that the candidates in the mayoral election campaign have been p
  • 如何使用pandas进行excel文件读取(二)

    如何使用pandas进行excel指定行列读取 文章目录 前言 一 pandas是什么 二 loc和iloc方法 1 引入库 2 读入数据 3 读取指定数据 总结 前言 前面说到了如何用pandas对excel文件进行读取 但是那种读取只适
  • 根据计算两点之间的距离

    function getDistance lat1 lng1 lat2 lng2 earthRadius 6367000 lat1 lat1 pi 180 lng1 lng1 pi 180 lat2 lat2 pi 180 lng2 lng
  • 函数重写&运算符重载&类方法和静态方法&对象其他概念

    重要思想 python中万物皆对象 1 函数重写 有了的前提下改写 重写 override v 以权力 否决 推翻 在继承的前提下 如果在子类中重新实现了父类中的函数 才能进行函数重写 自定义函数的重写 1 什么时候需要重写函数 如果一个类
  • 静态Web服务器-返回指定页面数据

    学习目标 能够写出组装指定页面数据的响应报文 1 静态Web服务器的问题 目前的Web服务器 不管用户访问什么页面 返回的都是固定页面的数据 接下来需要根据用户的请求返回指定页面的数据 返回指定页面数据的实现步骤 获取用户请求资源的路径 根
  • Nginx 使用 proxy_cookie_path 解决反向代理 cookie 丢失导致无法登录等问题

    语法 参考nginx官方文档 语法 proxy cookie path off proxy cookie path path replacement 默认 proxy cookie path off 位置 http server locat
  • 学习前端必要的PS基础

    学习前端必要的PS基础 为什么我们要学习PS 学习PS需要知道的基本操作 为什么我们要学习PS 因为我们需要知道设计稿里面的颜色 字体大小 背景颜色 一些元素的宽高距离等等信息 学习PS需要知道的基本操作 点击菜单栏 窗口 信息 字符 图层
  • 新书上市

    本书从各种角度来思考同一个数学问题 一共 16 个问题 并给出不同的解答 这 16 个问题包括 三等分蛋糕 设计时钟的表盘 求出地球的直径 列举违背规律的东西 画出心形图像 列举答案为 1 的问题 三等分角 用大定理证明一些无聊的问题 求出
  • html标签类前端笔记

    HTML5 布局类标签 HTML是具有语义化的语言 针对网页的布局 有一类标签代表各种意义的 布局盒子 所有的布局类标签都主要用来构建页面的内容区域 是双标签类型 是双标签类型 默认显示为块状元素 通用的布局标签 div 语义 无明确的含义
  • ElasticSearch-基本操作

    目录 索引操作 创建索引 查看索引 删除索引 文档操作 创建文档 查看文档 修改文档 修改字段 删除文档 条件删除文档 映射操作 映射数据说明 创建映射 查看映射 索引映射关联 索引操作 对比关系型数据库 创建索引就等同于创建数据库 创建索
  • 在线音乐播放器测试用例

    登录功能测试用例 当用户输入正确的用户名和密码时 方可登录成功 否则 会给出相应得提示 上传音乐测试用例 用户选择上传的音乐后缀是 mp3时 才能上传成功 查询音乐测试用例 查询音乐支持指定名称查询和模糊匹配查询 安全测试 安全测试作为系统
  • Servlet+JSP实现web应用程序

    上一篇博客介绍了Servlet的基础知识 此篇博客通过实际例子来演示如果搭配Servlet和JSP编写web应用程序 如果对Servlet和JSP基础知识不清楚 可查看这里了解基础知识 另外 web Demo应用中还使用了Bootstrap
  • 【RocksDB】Ubuntu18.04下编译rocksdb

    最近的新项目是NewSQL 底层存储引擎是rocksdb 于是在Ubuntu下编译了一下 下面是编译过程 首先安装依赖的包以及组件 安装gcc g 及make sudo apt get install build essential 安装g