linux下rocksdb的编译安装

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

    github仓库:https://github.com/facebook/rocksdb/

    操作系统:CentOS 7.x  gcc 4.8

    编译前依赖:cmake,gflags,liblz4

    其中gflags可以参考上一篇文章安装,注意务必打开动态库编译的选项,lz4如果是centos则直接使用yum安装即可:

yum -y install lz4-devel

    准备好之后开始安装rocksdb,目前最新稳定版是:5.18.3

    解压安装包并创建编译目录:

tar -xvzf rocksdb-5.18.3.tar.gz
cd rocksdb-5.18.3/
mkdir build
cd build

    然后开始编译源代码:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rocksdb ..
make
make install

    这里将rocksdb安装到/usr/local/rocksdb独立目录,方便进行管理

    这这里rocksdb就算安装成功了,比如我们想使用python操作rocksdb,需要模块python-rocksdb,而这个模块就需要依赖于刚才编译好的rocksdb作为基础库,所以需要设置头文件和lib环境变量,提供python-rocksdb模块编译和运行时使用:

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/rocksdb/include/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/rocksdb/lib64/
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/rocksdb/lib64/

    上面具体的变量导入在python-rocksdb文档上也有描述,这些变量可以添加至profile,后续无需再导入,然后可以安装python-rocksdb模块:

pip install python-rocksdb

    安装之后如果import rocksdb没问题说明成功了,注意导入的时候也需要gflags依赖,不要忘了加到LD_LIBRARY_PATH

    以上就是rocksdb以及python-rocksdb的安装,网上很多文章都表示有坑,其实是安装的过程不对,如果有问题可以留言交流. 

--------------------------------- 20200909 更新 ---------------------------------------

    除了上面的方式安装外还可以按照下面的不用cmake的方式安装:

    首先安装必要依赖:

yum install gflags-devel
yum install snappy-devel
yum install zlib-devel
yum install bzip2-devel  
yum install libstdc++-devel

    上面这些包是编译必须用到的,然后对于客户端使用可能还需要下面的包,否则会提示ld的错误:

yum install lz4-devel
yum install libzstd-devel

    尽量在编译之前把上面这些包都安装一下,然后克隆源码或者下载仓库的源码再上传解压:

git clone https://github.com/facebook/rocksdb.git
cd rocksdb

    然后编译,这里正常只需要根据需要编译动态库或者静态库即可,不用全部编译:

make shared_lib
# 静态库编译
make static_lib

    我这里使用动态库进行编译,编译完之后安装:

make install-shared PREFIX=/usr/local/rocksdb
# 静态库安装
make install-static PREFIX=/usr/local/rocksdb

    同样我这里也是用动态库的方式安装,安装大小静态库比动态库要大很多,PREFIX指定安装的位置,默认是/usr/local,这样rocksdb就安装上了,然后同样需要指定一下运行时的目录:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/rocksdb/lib

    编译的时候根据具体的程序指定头文件和动态库的目录即可,上面叙述的这种方法同样可以安装rocksdb,也是官网上介绍的一种方法

 

posted @ 2019-04-12 17:14  小得盈满  阅读(10758)  评论(0编辑  收藏  举报