Ubuntu安装Rocksdb并调试
前言
第一次写博客^_^
系统是全新的Ubuntu20.04,什么都没有,一切从头开始安装
查看gcc和g++版本
sudo apt-get update
gcc --version
g++ --version
注意这里是俩杠。4.7以上不用更新,下面代表正常,第二行是版本号。

没有的话安装:
sudo apt install build-essential
安装必要的一些库
sudo apt-get install libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libgflags-dev
下载,安装
wget https://github.com/facebook/rocksdb/archive/v6.6.4.zip #6.6.4 (2020-01-31)
此过程时间较长,且容易失败。但这是几种命令行下载方法中失败率最低的一种了,嫌慢可以在Windows下用百度云之类的下载别人下载好的,然后用远程软件传(貌似更慢哈哈)。
unzip v6.6.4.zip
cd rocksdb-6.6.4/
make static_lib && sudo make install-static
make shared_lib && sudo make install-shared
其中第一步里全新的系统没有zip的话安装(一般都有,有请忽略↓):
sudo apt-get install zip
另:后两步会消耗大量时间,以“$DEBUG_LEVEL is 0”开头,后面一堆CC,可以去干点别的事。
另一种方法:
用其本身的cmake来直接解决,要先安装cmake才行,打完下面的“cmake CM”之后可以直接Table键补全。
cmake CMakeLists.txt
make db_bench #或者 make all 都行,会出现一行行绿色的进度
rocksdb编译分为三种模式,上面的install属于运行最快的模式,同时也是没有debug的模式,将内部的断言全部清除了。
然后是make all,make db_bench之类的模式属于debug模式,运行速度比上面的慢一点,但是方便debug和找出问题。
设置环境变量
#echo "/usr/local/lib" |sudo tee /etc/ld.so.conf.d/rocksdb-x86_64.conf
sudo ldconfig -v #refresh the ldconfig cache
INSTALL_PATH=/usr
make shared_lib && sudo make install-shared
sudo ldconfig -v #refresh the ldconfig cache
到这里就算是安装成功了,接下来是写个小程序测一下以及db_bench的测试。
测试程序
创建一个c++程序,命名为test.cpp
先vim test.cpp创建了文件,然后按“i”键进入插入模式,复制粘贴下面的代码,然后按“esc”,输入“:wq”,也就是保存并退出。
1 #include <cstdio>
2 #include <string>
3 #include "rocksdb/db.h"
4 #include "rocksdb/slice.h"
5 #include "rocksdb/options.h"
6
7 using namespace std;
8 using namespace rocksdb;
9
10 const std::string PATH = "/tmp/rocksdb_tmp";
11 int main(){
12 DB* db;
13 Options options;
14 options.create_if_missing = true;
15 Status status = DB::Open(options, PATH, &db);
16 assert(status.ok());
17 Slice key("foo");
18 Slice value("bar");
19 std::string get_value;
20 status = db->Put(WriteOptions(), key, value);
21 if(status.ok()){
22 status = db->Get(ReadOptions(), key, &get_value);
23 if(status.ok()){
24 printf("get %s success!!\n", get_value.c_str());
25 }else{
26 printf("get failed\n");
27 }
28 }else{
29 printf("put failed\n");
30 }
31 delete db;
32 }
编译运行
动态编译:
g++ -std=c++11 -o rocksdbtest test.cpp -lrocksdb -lpthread -ldl
最后这个 -ldl很重要
运行:
./rocksdbtest
或者静态编译:
g++ -std=c++11 -o rocksdbtest test.cpp ./librocksdb.a -lpthread -lsnappy -lz -lbz2 -lzstd /usr/lib/x86_64-linux-gnu/liblz4.a
(很长,都在同一行,这个加不加-ldl没试)
运行成功后应该输出get bar success!!,有错会报错。
另:若是完全新的电脑可能没有安装gdb,不能进行debug,直接sudo aot-get install gdb即可。
db_bench测试
此时看文件我们会发现有很多的.d文件,这是make过程残留的,不知道是makefile文件没写好还是咋回事,清除方式是下面
make clean
现在再看(ls命令)是不是清爽多了,现在进行db_bench的测试
make db_bench
注意输入这句话的时候不要想用Tab键补全,不然会卡很久(不要问我怎么知道的)。
make成功大致是这样的,当然也需要很长时间↓

完成后进行db_bench测试
注意:很多人可能因为snappy库的缘故不能运行db_bench(实际上之前已经安装了,但可能因为链接问题无法使用),实在安装不好的话可以直接取消掉snappy压缩,具体就是在./db_bench后面加上参数"-compression_type=none",此时snappy压缩就被关掉了。
./db_bench
参数:db_bench测试时可以加很多很多的参数,在后面直接加“--”加参数名加参数值即可,具体请直接搜索rocksdb参数。
例如./db_bench --benchmarks="fillseq"表示顺序写入。
可以通过可以通过 ./db_bench --help自己查看想要的配置参数
完事记得
make clean
数据存在哪
首先输入“cd /”进入根目录,然后“cd tmp”进入临时文件存储区,然后找到以rocksdb开头的文件夹即是。
注意里面的日志文件,可以看到很多有用的信息哦。
bye~
参考
https://blog.jeffli.me/blog/2016/12/02/getting-started-with-rocksdb-in-centos-7/
https://zhang0peter.blog.csdn.net/article/details/96869454
Ubuntu安装Rocksdb并调试的更多相关文章
- Mac OS、Ubuntu 安装及使用 Consul
Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...
- [Hadoop入门] - 2 ubuntu安装与配置 hadoop安装与配置
ubuntu安装(这里我就不一一捉图了,只引用一个网址, 相信大家能力) ubuntu安装参考教程: http://jingyan.baidu.com/article/14bd256e0ca52eb ...
- 在Ubuntu中使用JDB调试代码
在Ubuntu中使用JDB调试代码 了解JDB JDB是JDK安装的一部分,是基于文本和命令行的调试工具,JDB是可以免费获取且平台独立的,缺点是只有命令行格式. JDB基础命令 在方法中设置断点st ...
- ubuntu安装mysql
好记性不如烂笔头,记录一下,ubuntu安装mysql的指令. 安装MySQL: sudo apt-get install mysql-server sudo apt-get install mysq ...
- ubuntu安装vim时提示 没有可用的软件包 vim,但是它被其它的软件包引用了 解决办法
ubuntu安装vim时提示 没有可用的软件包 vim-gtk3,但是它被其它的软件包引用了 解决办法 本人在ubuntu系统安装vim 输入 sudo apt-get install vim 提示 ...
- docker 1.8+之后ubuntu安装指定版本docker-engine
这边记录ubuntu安装过程,首先是官网文档 If you haven’t already done so, log into your Ubuntu instance. Open a termina ...
- debian/ubuntu安装桌面环境
apt-get install xorg apt-get install gnome 然后startx ubuntu 安装Gnome桌面 1.安装全部桌面环境,其实Ubuntu系列桌面实际上有几种桌面 ...
- 一个ubuntu phper的自我修养(ubuntu安装)
ubuntu安装篇 一.ubuntu下载 到ubuntu官网下载适合自己电脑配置的系统版本,此处不做展开. 二.制作USB启动盘 在windows下制作USB启动盘,工具是universal usb ...
- ubuntu 安装JAVA jdk的两种方法:
ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用pp ...
随机推荐
- python中numpy库ndarray多维数组的的运算:np.abs(x)、np.sqrt(x)、np.modf(x)等
numpy库提供非常便捷的数组运算,方便数据的处理. 1.数组与标量之间可直接进行运算 In [45]: aOut[45]:array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ ...
- selenium: where to get ChromeDriver?
address: http://npm.taobao.org/mirrors/chromedriver
- Table.SplitColumn拆分…Split…(Power Query 之 M 语言)
数据源: 一列若干行数据. 目标: 根据特定条件拆分 操作过程: 选取"品名"列>[主页](或[转换])>[拆分列] 选取"品名"列>[主页] ...
- 常用DBhelper封装方法
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- java 多线程:线程死锁,如何判断程序是否有死锁代码块儿
线程死锁 死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去(百度百科). 代码示例: /** * @ClassName ...
- JAVA整合FlinkCDC 监控数据库表变化
版本至少jdk8 maven <!-- https://mvnrepository.com/artifact/com.alibaba.ververica/flink-connector-mysq ...
- sigslot之简化版
1.关于 1.1 基于原版sigslot做了部分修改.原版的信号支持最多支持8个参数,改进后,最多支持1个参数,这样肯定不能满足日常需求,但是,我们可以将信号的一个参数改为类型指针,比如信号定义时的模 ...
- 【LeetCode】1418. 点菜展示表 Display Table of Food Orders in a Restaurant
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典统计边的次数 日期 题目地址:https://le ...
- 【LeetCode】LCP 06. 拿硬币
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 替换 日期 题目地址:https://leetcode ...
- 【LeetCode】289. Game of Life 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...