编译ROCKSDB总结
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编译 别看文档了
- 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总结的更多相关文章
- Windows下 VS2015编译RocksDB
VS2015编译RocksDB RocksDB 是一个来自 facebook 的可嵌入式的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库,但主要目的还是嵌入式.Roc ...
- rocksdb编译步骤——Java、Golang、mac
如果不是必要不建议自己编译rocksdb,编译的过程比较耗时费力.现在已经有很多编译好的文件可供使用. Java <!-- https://mvnrepository.com/artifact/ ...
- Mac环境下升级gcc版本--rocksdb
前言 在mac环境下编译rocksdb,需要配置依赖的编译环境,其中有一项比较麻烦:c++编译要支持C++11,但是在mac环境安装xcode-select --install之后,已经安装有了gcc ...
- linux下rocksdb的编译安装
RocksDB起源于Facebook的实验室项目,实现了一个高性能的快速存储器,是基于C++编写的key value数据库,很多软件都是采用内置rocksdb的方式运行,所以需要我们提前安装rocks ...
- rocksdb编译测试的正确姿势
需要先安装 gflags 在进行 make db_bench 不然运行 db_bench 会出现 Please install gflags to run rocksdb tools 错误 bench ...
- rocksdb 编译安装 日志
Compilation RocksDB's library should be able to compile without any dependency installed, although w ...
- RocksDB安装
1.安装相关依赖软件 sudo apt-get install build-essential sudo apt-get install libsnappy-dev zlib1g-dev libbz2 ...
- AliOS编译安装MyRocks
MyRocks是facabook版将自主研发的MySQL分支,其源码位于为:https://github.com/facebook/mysql-5.6/ 首先需要安装以下: sudo yum inst ...
- SSDB 数据库如何换用 rocksdb 引擎?
牧童遥指杏花村,一枝红杏出墙来… SSDB 数据库如何换用 rocksdb 引擎? idea's blog 2014-04-12 71 阅读 rocksdb NoSQL SSDB 数据库使用的是 G ...
随机推荐
- 堆应用---构造Huffman树(C++实现)
堆: 堆是STL中priority_queue的最高效的实现方式(关于priority_queue的用法:http://www.cnblogs.com/flyoung2008/articles/213 ...
- 动态解析xml,并生成excel,然后发邮件。
直接贴代码了! DECLARE @CurrentServer NVARCHAR(100)DECLARE @CurrentDatabase NVARCHAR(100)DECLARE @CurrentLo ...
- 2、for 循环
exit_flag = False for i in range(10): if i <5: continue ##继续循环下一次,后面不执行 print(i) for j in range(1 ...
- JS 循环定时的一些思考
网上也有例子, function doSetTimeout(i) { setTimeout(function() { console.log(i); }, 1000); } for (var i = ...
- [Kubernetes]关于 Kubernetes ,你想要的,都在这儿了
陆陆续续,关于 Kubernetes 写了有 20+ 篇文章了. 今天这篇文章来一个整合,从实践到理论,可以按需查看(我是按照博客发表时间来排序的,如果后续有想要更新的内容,也会及时更新到这篇文章中) ...
- dubbo基本信息
1.Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目. 面试官问你如果这个都不清楚,那下面的就没必要问了. 官网: ...
- windows cmd下作MD5校验
CertUtil -hashfile C:\xxx.tar MD5 此命令不仅可以做MD5哈希算法校验,还支持其他的哈希算法,具体如下: CertUtil -hashfile 文件路径 [算法] 支持 ...
- hibernate 一对多 取多方数据重复问题,FetchMode.JOIN、FetchMode.SELECT、FetchMode.SUBSELECT区别
问题描述:稿件附件表数据时出现多条重复数据. 介绍: 表:稿件实体Manuscripts (数据库表MANUSCRIPTS),稿件附件实体ManuscriptsAtt(表MANUSCRIPTS_ATT ...
- Go语言--数组、切片、
3.1 数组--固定大小的连续空间 3.1.1 声明数组 写法 var 数组变量名 [元素数量]T 说明: 变量名就是使用时的变量 元素的数量可以是表达式,最后必须为整型数值 T 可是是任意基本类型, ...
- R语言︱LDA主题模型——最优主题...
R语言︱LDA主题模型——最优主题...:https://blog.csdn.net/sinat_26917383/article/details/51547298#comments