内容简介:Rocksdb是挺好的一个东西,就是取得一个可用的库太麻烦。之前我是用的rocksdbsharp里面他有编译好windows 和 linux的库 兼容性还挺好,ubuntu win10 直接跑没毛病,可惜他是去年build的了,我要用的checkpoint 这么重要的功能,他这个版本没有。于是乎只好自行编译rocksdb,感觉上了一条贼船啊。我在使用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 等几个目录
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Rust跨平台与条件编译总结
- Flutter 混合开发实战问题记录(四)编译运行时问题的一些总结
- SLF4j 居然不是编译时绑定?日志又该如何正确的分文件输出?(原理与总结篇)
- Xcode 编译疾如风系列(二):并行编译
- 编写 MSBuild 内联编译任务(Task)用于获取当前编译环境下的所有编译目标(Target)
- 使用 Visual Studio 编译时,让错误一开始发生时就停止编译(以便及早排查编译错误节省时间)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
写给大忙人看的C++
【美】Brian Overland(布莱恩.奥弗兰德) / 卢涛、李颖 / 电子工业出版社 / 2015-8 / 109.00
《写给大忙人看的C++》全面介绍了C++语言知识,既提供了学习C++语言最新功能的捷径,也为快速找到特定问题的答案提供了便利。《写给大忙人看的C++》简明地描述了C++核心语言和标准库中几乎所有的函数、对象和运算符,一目了然地显示了语法、结构和重要函数的信息,内容组织形式便于快速查找信息。《写给大忙人看的C++》精选了实用的例子来深入地讲解概念,还提供了富有挑战性的练习及参考答案,便于读者举一反三......一起来看看 《写给大忙人看的C++》 这本书的介绍吧!