前言

第一次写博客^_^

系统是全新的Ubuntu20.04,什么都没有,一切从头开始安装

查看gcc和g++版本

  1. sudo apt-get update
  2. gcc --version
  3. g++ --version

注意这里是俩杠。4.7以上不用更新,下面代表正常,第二行是版本号。

没有的话安装:

  1. sudo apt install build-essential

安装必要的一些库

  1. sudo apt-get install libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libgflags-dev

下载,安装

  1. wget https://github.com/facebook/rocksdb/archive/v6.6.4.zip #6.6.4 (2020-01-31)

此过程时间较长,且容易失败。但这是几种命令行下载方法中失败率最低的一种了,嫌慢可以在Windows下用百度云之类的下载别人下载好的,然后用远程软件传(貌似更慢哈哈)。

  1. unzip v6.6.4.zip
  2. cd rocksdb-6.6.4/
  3. make static_lib && sudo make install-static
  4. make shared_lib && sudo make install-shared

其中第一步里全新的系统没有zip的话安装(一般都有,有请忽略↓):

  1. sudo apt-get install zip

另:后两步会消耗大量时间,以“$DEBUG_LEVEL is 0”开头,后面一堆CC,可以去干点别的事。

另一种方法:

用其本身的cmake来直接解决,要先安装cmake才行,打完下面的“cmake CM”之后可以直接Table键补全。

  1. cmake CMakeLists.txt
  2. make db_bench #或者 make all 都行,会出现一行行绿色的进度

rocksdb编译分为三种模式,上面的install属于运行最快的模式,同时也是没有debug的模式,将内部的断言全部清除了。

然后是make all,make db_bench之类的模式属于debug模式,运行速度比上面的慢一点,但是方便debug和找出问题。

设置环境变量

  1. #echo "/usr/local/lib" |sudo tee /etc/ld.so.conf.d/rocksdb-x86_64.conf
  2. sudo ldconfig -v #refresh the ldconfig cache
  3. INSTALL_PATH=/usr
  4. make shared_lib && sudo make install-shared
  5. sudo ldconfig -v #refresh the ldconfig cache

到这里就算是安装成功了,接下来是写个小程序测一下以及db_bench的测试。

测试程序

创建一个c++程序,命名为test.cpp

先vim test.cpp创建了文件,然后按“i”键进入插入模式,复制粘贴下面的代码,然后按“esc”,输入“:wq”,也就是保存并退出。

  1. 1 #include <cstdio>
  2. 2 #include <string>
  3. 3 #include "rocksdb/db.h"
  4. 4 #include "rocksdb/slice.h"
  5. 5 #include "rocksdb/options.h"
  6. 6
  7. 7 using namespace std;
  8. 8 using namespace rocksdb;
  9. 9
  10. 10 const std::string PATH = "/tmp/rocksdb_tmp";
  11. 11 int main(){
  12. 12 DB* db;
  13. 13 Options options;
  14. 14 options.create_if_missing = true;
  15. 15 Status status = DB::Open(options, PATH, &db);
  16. 16 assert(status.ok());
  17. 17 Slice key("foo");
  18. 18 Slice value("bar");
  19. 19 std::string get_value;
  20. 20 status = db->Put(WriteOptions(), key, value);
  21. 21 if(status.ok()){
  22. 22 status = db->Get(ReadOptions(), key, &get_value);
  23. 23 if(status.ok()){
  24. 24 printf("get %s success!!\n", get_value.c_str());
  25. 25 }else{
  26. 26 printf("get failed\n");
  27. 27 }
  28. 28 }else{
  29. 29 printf("put failed\n");
  30. 30 }
  31. 31 delete db;
  32. 32 }

编译运行

动态编译:

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

最后这个 -ldl很重要

运行:

  1. ./rocksdbtest

或者静态编译:

  1. 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文件没写好还是咋回事,清除方式是下面

  1. make clean

现在再看(ls命令)是不是清爽多了,现在进行db_bench的测试

  1. make db_bench

注意输入这句话的时候不要想用Tab键补全,不然会卡很久(不要问我怎么知道的)。

make成功大致是这样的,当然也需要很长时间↓

完成后进行db_bench测试

注意:很多人可能因为snappy库的缘故不能运行db_bench(实际上之前已经安装了,但可能因为链接问题无法使用),实在安装不好的话可以直接取消掉snappy压缩,具体就是在./db_bench后面加上参数"-compression_type=none",此时snappy压缩就被关掉了。

  1. ./db_bench

参数:db_bench测试时可以加很多很多的参数,在后面直接加“--”加参数名加参数值即可,具体请直接搜索rocksdb参数。

例如./db_bench --benchmarks="fillseq"表示顺序写入。

可以通过可以通过 ./db_bench --help自己查看想要的配置参数

完事记得

  1. 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并调试的更多相关文章

  1. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  2. [Hadoop入门] - 2 ubuntu安装与配置 hadoop安装与配置

    ubuntu安装(这里我就不一一捉图了,只引用一个网址, 相信大家能力) ubuntu安装参考教程:  http://jingyan.baidu.com/article/14bd256e0ca52eb ...

  3. 在Ubuntu中使用JDB调试代码

    在Ubuntu中使用JDB调试代码 了解JDB JDB是JDK安装的一部分,是基于文本和命令行的调试工具,JDB是可以免费获取且平台独立的,缺点是只有命令行格式. JDB基础命令 在方法中设置断点st ...

  4. ubuntu安装mysql

    好记性不如烂笔头,记录一下,ubuntu安装mysql的指令. 安装MySQL: sudo apt-get install mysql-server sudo apt-get install mysq ...

  5. ubuntu安装vim时提示 没有可用的软件包 vim,但是它被其它的软件包引用了 解决办法

    ubuntu安装vim时提示 没有可用的软件包 vim-gtk3,但是它被其它的软件包引用了 解决办法 本人在ubuntu系统安装vim  输入 sudo apt-get install vim 提示 ...

  6. docker 1.8+之后ubuntu安装指定版本docker-engine

    这边记录ubuntu安装过程,首先是官网文档 If you haven’t already done so, log into your Ubuntu instance. Open a termina ...

  7. debian/ubuntu安装桌面环境

    apt-get install xorg apt-get install gnome 然后startx ubuntu 安装Gnome桌面 1.安装全部桌面环境,其实Ubuntu系列桌面实际上有几种桌面 ...

  8. 一个ubuntu phper的自我修养(ubuntu安装)

    ubuntu安装篇 一.ubuntu下载 到ubuntu官网下载适合自己电脑配置的系统版本,此处不做展开. 二.制作USB启动盘 在windows下制作USB启动盘,工具是universal usb ...

  9. ubuntu 安装JAVA jdk的两种方法:

    ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用pp ...

随机推荐

  1. ORACLE 数据块PCTFREE和PCTUSED

    PCTFREE表示一个数据块可用空间小于PCTFREE时,该数据块不在被记录在FREELIST中,即不能插入新数据. PCTUSED表示一个数据块已经用空间如果小于PCTUSED时,该数据块才会被重新 ...

  2. 【编程思想】【设计模式】【行为模式Behavioral】观察者模式Observer

    Python转载版 https://github.com/faif/python-patterns/blob/master/behavioral/observer.py #!/usr/bin/env ...

  3. CountDownLatch原理

    正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行.在Java并发中,countdownlatch的概念是一 ...

  4. 【Service】【Web】【Middleware】Tomcat

    1. 概念 1.1. 官方网站:tomcat.apache.org 1.2. tomcat的组件 <Server> <Service> <Connector/> & ...

  5. python实现skywalking的trace模块过滤和报警

    skywalking本身的报警功能,用起来视乎不是特别好用,目前想实现对skywalking的trace中的错误接口进行过滤并报警通知管理员和开发.所以自己就用python对skywalking做了二 ...

  6. Identity Server 4 从入门到落地(十一)—— Docker部署

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  7. Apache Log4j 远程代码执行漏洞源码级分析

    漏洞的前因后果 漏洞描述 漏洞评级 影响版本 安全建议 本地复现漏洞 本地打印 JVM 基础信息 本地获取服务器的打印信息 log4j 漏洞源码分析 扩展:JNDI 危害是什么? GitHub 项目 ...

  8. [BUUCTF]PWN——jarvisoj_fm

    jarvisoj_fm 附件 步骤: 例行检查,32位,开启了canary和nx保护 运行一下程序,看看大概的情况 32位ida载入,shift+f12检索程序里的字符串,看见了 " /bi ...

  9. 测试开发实战[提测平台]17-Flask&Vue文件上传实现

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 先回顾下在此系列第8次分享给出的预期实现的产品原型和需求说明,如下图整体上和前两节实现很相似,只不过一般测试报告要写的内容可能比较多,就多 ...

  10. JS自动播放音频 无效chrome设置 (Uncaught (in promise) DOMException: play() failed because the user didn't interact)

    Chrome的autoplay政策在2018年4月做了更改.新的行为:浏览器为了提高用户体验,减少数据消耗,现在都在遵循autoplay政策,Chrome的autoplay 政策非常简单 muted ...