【RocksDB】Ubuntu20.04下编译rocksdb

2023-11-09

前言:

我在刚学rocksdb的时候是在2022年,但是网上的资源很少,查了好久才把rocksdb安装成功,在这里向大家分享一下我的经历,安装过程中也报了很多错误,希望大家不要迷路

首先

在虚拟机里面安装依赖的包以及组件:总共七个依赖包和组件,依次执行下列命令(我在安装过程中没有出现任何问题,如果有遇到问题请评论,大家一起讨论)

sudo apt-get install build-essential
sudo apt-get install libgflags-dev
sudo apt-get install libsnappy-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libbz2-dev
sudo apt-get install liblz4-dev
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源码并解压

注意:在make static_lib之后要加make clean

wget https://github.com/facebook/rocksdb/archive/master.zip
unzip master.zip
cd rocksdb-master
#生成静态库
make static_lib
#下面命令我也不知道为什么要加,我加之后,生成动态库才可以安装成功
make clean
#生成动态库
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

到此为止就是安装成功了

 

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

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

  • Linux中如何避免sleep调用因信号而中断?

    我在 Linux 中使用实时信号来通知串行端口中新数据的到达 不幸的是 这会导致睡眠呼叫在有信号时被中断 有人知道避免这种行为的方法吗 我尝试使用常规信号 SIGUSR1 但我不断得到相同的行为 来自 nanosleep 联机帮助页 nan
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • python3-pip 安装但找不到 pip3 命令?

    我正在几台计算机上测试Python3 程序 为此 我需要使用 pip3 安装 Python 库 首先 我在每台计算机上安装 python3 pip 每个计算机都运行 Kubuntu 操作系统 一切都很好 然后我用 pip3 安装了我需要的包
  • nginx + WordPress:SFTP + 自动更新的适当用户/文件权限?

    I used this http wordimpress com aws ec2 rds s3 cloudfront nginx wordpress tutorial roundup 在 Ubuntu VPS 上安装 nginx 和 Wor
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • docker repo 解决映像构建期间的错误错误(检查存储库文件)

    我在构建 docker 映像时遇到问题 并尝试了不同的 DNS 选项 但似乎运气不佳 Docker版本1 9 1 构建a34a1d5 回购还活着 为了运行我使用的容器docker run dns 192 168 1 1 d ti name
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 创建反应应用程序:npm 错误!解析“...”附近时 JSON 输入意外结束

    描述错误 npx create react app my app不适合我 我试过npm cache clean force但我一次又一次地遇到同样的错误 重现步骤 npm cache clean force npm npx create r

随机推荐

  • 实现一个顺序存储的线性表(数据结构与算法 - 线性表)

    任务描述 本关任务 实现 step1 Seqlist cpp 中的SL InsAt SL DelAt和SL DelValue三个操作函数 以实现线性表中数据的插入 删除与查找等功能 相关知识 线性表是最基本 最简单 也是最常用的一种数据结构
  • Python list函数

    目录 描述 语法 使用示例 1 创建一个空列表 无参调用list函数 2 将字符串转换为列表 3 将元组转换为列表 4 将字典转换为列表 5 将集合转换为列表 6 将其他可迭代序列转化为列表 注意事项 1 参数必须是可迭代序列对象 将列表转
  • chrome中直接使用import

    现在我们在开发项目时都是基于构建工具 像webpack 上进行开发 所以在使用import时得心应手 但今天在chrome中直接使用import时 发现不知道如何使用 chrome中直接使用import 三个条件 浏览器版本需要支持 浏览器
  • c++常用输出函数详解

    1 printf printf的基本运用 printf是c 标准输出函数 目的是向标准输出设备按规定格式输出信息 格式如下 printf d a 上面的a是一个int形变量 但如果想输出一个字符型的变量 字符串等该怎么办呢 那我们就要把 后
  • 【mmdetection】小trick试验结果

    基准 faster rcnn r50 fpn 1x coco简称frrf config mAP 最好 模型大小 publish model cal train time s iter 1 frrf 0 9346 315 32MB
  • axios实现同步请求

    如何实现ajax请求的同步 通过jquery发送 将async属性设置为false 这样就会发送同步请求 在axios中 所有的请求都是异步发送的 所以单独用axios是实现不了同步的 需要结合async与await关键字使用 var da
  • ab压力测试 和 nginx 配置优化 及 用户打开的最大进程数

    原文 https blog csdn net wudinaniya article details 86064797 一 ab压力测试 和 nginx 配置优化 压力测试工具 ApacheBench 简称ab 是Apache 中自带的基准性
  • 毕业设计-基于 Python 的天气预测系统

    目录 前言 课题背景和意义 实现技术思路 一 Python 二 网络爬虫 三 基于 Python 的天气预测系统 四 系统测试 五 总结 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学
  • MATLAB 创建矩阵

    创建简单数值矩阵 输入矩阵是要以 为标识 矩阵的元素应在 内部 此时MATLAB才识别为矩阵 矩阵的同行元素之间可由空格或 分隔 行与行之间要用 或回车符分隔 A 1 2 3 4 5 6 7 8 9 运算结果 使用 zeros 函数和 on
  • luci流程简介

    LuCI作为 FFLuCI 诞生于2008年3月份 目的是为OpenWrt固件从Whiterussian 到 Kamikaze实现快速配置接口 LuCI是OpenWrt上的Web管理界面 LuCI采用了MVC三层架构 使用lua脚本开发 所
  • mysql不能使用别名做判断条件的解决方案

    错误例子 select name as n from user where n 张三 报错 n 字段在表user中不存在 解决办法 select name as n from user where name 张三 具体原因 请自行百度
  • SpringMVC框架从入门到精通

    文章目录 SpringMVC 框架介绍 概述 MVC模型 性能超群 工作原理 案例 展示汽车数据 需求 创建Maven module 创建RunApp java Car java CarController java 测试 处理请求参数 概
  • element-ui表格组件el-table实现行编辑与新增功能

    element前端ui组件挺美观的 我们也使用了他们的table组件 但是默认没有提供行编辑功能 我们可以通过将table的每个单元格换成input框来巧妙实现 默认每个单元格就是一个template数据填充 不可编辑 我们可以在templ
  • Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互(4)

    Qt Web混合开发 QtWebChannel实现Qt与Web通信交互 文章目录 Qt Web混合开发 QtWebChannel实现Qt与Web通信交互 1 概述 2 实现效果 3 实现功能 4 关键代码 5 源代码 更多精彩内容 个人内容
  • 不仅仅好看!30个优秀logo的设计思想分析

    拥有一个抢眼的Logo对企业来乃一大幸事 毕竟Logo千千万 但真正让人过目不忘的作品可是屈指可数 好的Logo必须量体裁衣 迅速传递出企业的价值和理念 本文里精选了30个经典的标志设计 并附上设计思想分析 相信会对你受益匪浅 Castle
  • 从零开始的iOS开发: 20

    目录 一 开发环境 二 基础知识 1 往期知识点 2 简易自动布局 Stack View 三 实验步骤 1 先在Xcode建立一个APP项目 2 界面搭建 3 连接控件与代码 4 补充代码 完善功能 一 开发环境 开发工具 Xcode 12
  • 【Vue】Element-Plus 源码学习笔记——实现一个基本的 ElMessage 组件

    先贴下 Element Plus ElMessage 源码的网址 我们需要实现的效果类似 ElMessage 即能够显示多个消息 上一个消息消失下面的消息会自动往上移动 进入移出动画 自定义消息和持续时间 其他选项这里不考虑 大体思路 我们
  • C++ 风格指南

    0 扉页 0 1 译者前言 Google 经常会发布一些开源项目 意味着会接受来自其他代码贡献者的代码 但是如果代码贡献者的编程风格与 Google 的不一致 会给代码阅读者和其他代码提交者造成不小的困扰 Google 因此发布了这份自己的
  • Windows+Git+TortoiseGit+COPSSH安装图文教程

    跟师弟一起搭了个git本地服务器 他整理了一下相关内容 我转过来 准备工作 1 Git 1 8 1 2 preview20130201 exe 下载地址 https code google com p msysgit downloads l
  • 【RocksDB】Ubuntu20.04下编译rocksdb

    前言 我在刚学rocksdb的时候是在2022年 但是网上的资源很少 查了好久才把rocksdb安装成功 在这里向大家分享一下我的经历 安装过程中也报了很多错误 希望大家不要迷路 首先 在虚拟机里面安装依赖的包以及组件 总共七个依赖包和组件