Rocksdb是挺好的一个东西,就是取得一个可用的库太麻烦。之前我是用的rocksdbsharp里面他有编译好windows 和 linux的库 兼

容性还挺好,ubuntu win10 直接跑没毛病,可惜他是去年build的了,我要用的checkpoint 这么重要的功能,他这个版本没有。于是乎只好自行编译rocksdb,感觉上了一条贼船啊。

我在使用rocksdb开发一个数据库https://github.com/lightszero/lightchain,欢迎关注。

Ubuntu的顺利编译

Ubuntu,ubuntu 编译rocksdb比较顺利,按照官网说明一步步正常编译,略过。

编译通过的gcc版本为7.3

Windows的艰难编译

Windows版本因为是VC很熟悉,只不过原来都是一堆dll,互相引用,很麻烦,还有mt md的问题,其实就是机械的把所有依赖的源码找回来,编译成lib,改mt,体力活。最后变成一个啥也不依赖的dll,容易部署。

https://github.com/lightszero/lightchain/blob/master/lightdb/native/rocksdb-5.17.0.dll

已编好,仅限x64

Centos的灾难

后来把so文件放到centos跑不起,一看一堆so找不到

用ldd 指令 一看,缺一堆东西,第一反应是GCC有问题,试装GCC7.3,一路升级一路bug,最后也没装上,没新查了。

 

 

仔细观察rocksdb项目,facebook说明是gcc 4.8以上,centos7是满足的。既然是cmake管理的,那么从新来整cmake吧,忽略facebook的官方文档

 

期间发生过 cmake版本太低,make版本太低等等状况,吐血三升

 

Cmake使用很顺利

需要注意这几个选项,rocksdb这几个压缩算法,不开就没有,就只能不压缩了。

由于rocksdb是分层压缩的,通用的zlib肯定要带上,目前我对小数据选择的压缩算法是snappy。和leveldb一样,snappy一定要带上。

实际还是四个压缩都带上吧

 

然后按facebook官网说明安装依赖库,编译,一切成功。

然后ldd 一看,又吐血,yum 安装出来的snappy库缺两个依赖库,偏偏是最重要的这个你有问题。

 

没办法自己编译snappy吧,把最新的源码拖下来,继续吐血,什么鬼,这个项目只能生成.a

可是rocksdb那边妥妥的配置加载snappy.so啊,cmake我门外汉,打死我也不想去改这个。

后来去把snappy的历史版本全部都拖下来研究,嗯 snappy 1.1.5 可以用,编译出来的so也正常了

总结

总结一下,记录下来,现在凌晨五点四十,编译了妥妥的一晚上。Centos真香……

 

cmake 和 make 先升级了

我是将make升级到了4.2

Cmake升级到了3.6.2

成功编译出可用的rocksdb

gcc 需要4.8以上

rocksdb编译 别看文档了

  1. rocksdb的说明我怎么也装不上 make 直接一堆错,原因不明,我是直接重新搞了cmake,4个压缩库选项打开,

    另外将gflags 和 snappy 原来的find_package 改成了find_library

    然后

    cmake .

    make rocksdb-shared -j

    成功

编译之前先安装一堆依赖库

    这个可以看文档,没错

就是facebook 网页这一堆

最重要,yum install snappy snappy-devel 在我的centos7上有问题,依赖库找不到。

你编译 出来之后 ldd librocksdb.so 这样看依赖库情况,有not found 就是不行。

 

处理方法是自己编译 snappy1.1.5,然后cp 到 usr/lib 等几个目录

编译ROCKSDB总结的更多相关文章

  1. Windows下 VS2015编译RocksDB

    VS2015编译RocksDB RocksDB 是一个来自 facebook 的可嵌入式的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库,但主要目的还是嵌入式.Roc ...

  2. rocksdb编译步骤——Java、Golang、mac

    如果不是必要不建议自己编译rocksdb,编译的过程比较耗时费力.现在已经有很多编译好的文件可供使用. Java <!-- https://mvnrepository.com/artifact/ ...

  3. Mac环境下升级gcc版本--rocksdb

    前言 在mac环境下编译rocksdb,需要配置依赖的编译环境,其中有一项比较麻烦:c++编译要支持C++11,但是在mac环境安装xcode-select --install之后,已经安装有了gcc ...

  4. linux下rocksdb的编译安装

    RocksDB起源于Facebook的实验室项目,实现了一个高性能的快速存储器,是基于C++编写的key value数据库,很多软件都是采用内置rocksdb的方式运行,所以需要我们提前安装rocks ...

  5. rocksdb编译测试的正确姿势

    需要先安装 gflags 在进行 make db_bench 不然运行 db_bench 会出现 Please install gflags to run rocksdb tools 错误 bench ...

  6. rocksdb 编译安装 日志

    Compilation RocksDB's library should be able to compile without any dependency installed, although w ...

  7. RocksDB安装

    1.安装相关依赖软件 sudo apt-get install build-essential sudo apt-get install libsnappy-dev zlib1g-dev libbz2 ...

  8. AliOS编译安装MyRocks

    MyRocks是facabook版将自主研发的MySQL分支,其源码位于为:https://github.com/facebook/mysql-5.6/ 首先需要安装以下: sudo yum inst ...

  9. SSDB 数据库如何换用 rocksdb 引擎?

     牧童遥指杏花村,一枝红杏出墙来… SSDB 数据库如何换用 rocksdb 引擎? idea's blog 2014-04-12 71 阅读 rocksdb NoSQL SSDB 数据库使用的是 G ...

随机推荐

  1. 散列(C++实现)

    散列的构成:散列函数,散列表的存储方式,散列表的冲突解决方法. 1.散列函数 较常用的散列函数有除留余数法,数字分析法,平方取中法,折叠法. 2.散列表的存储方式 闭散列法(开地址法),用数组存储:开 ...

  2. idea工具的快捷方式

    用idea默认的快捷键 Ctrl+~,快速切换方案(界面外观.代码风格.快捷键映射等菜单) Shift+Enter,向下插入新行 Ctrl+F,查找文本 Ctrl+R,替换文本 Ctrl+I,实现方法 ...

  3. CentOS7 安装Python

    CentOS7 安装Python 1. 前置条件 centos7 安装时 勾选Development Tools,如果你centos7没有选,需要更多必要库 必要库 # yum -y install ...

  4. Appnium-API-Status

    Status Java:// TODO Python:selenium.webdriver.common.utils.is_url_connectable(port) Description Retu ...

  5. 使用SpringSecurity体验OAUTH2之一 (入门1)

    OAUTH2是一种安全的授权框架,其原理在网上有许多文章上可以看到.但从实践角度,好的文章比较少.SpringSecurity框架本身是支持OAUTH2的,所以下面通过使用SpringSecurity ...

  6. 非常好用的sersync同步工具

    作者:邓聪聪 常用同步工具sync的进阶软件 服务端的配置: uid = rsync gid = rsync port = use chroot = on max connections = time ...

  7. 微信支付errcode:40163,code been used,错误小结

    1.配置时注意,支付平台中的支付授权目录, 注意大小写. 昨天碰到的问题,就是自己跳转时,路径写的全小写.跳转支付页面也能跳转过去,但是log中总是调用两次code,报40163错误.后改成和公总号支 ...

  8. C#学习笔记——MDI窗体(多文档界面)

    1.设置父窗体: 如果要将某个窗体设置为父窗体,只需将该窗体的IsMdiContainer属性设置为True即可. 2.设置子窗体: 通过设为某个窗体的MdiParent属性来确定该窗体是那个窗体的子 ...

  9. 什么时候Python的List,Tuple最后一个Item后面要加上一个逗号

    为什么看Python的代码,有时候会在数据结构的最后一项末尾加上逗号.直接来看,这个逗号很多余. 根据PEP81的解释: Trailing commas are usually optional, e ...

  10. Bootstrap-datepicker3官方文档中文翻译---I18N/国际化(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)

    I18N/国际化 这个插件支持月份和星期名以及weekStart选项的国际化.默认是英语(“en”); 其他有效的译本语言在 js/locales/ 目录中, 只需在插件后包含您想要的地区. 想要添加 ...