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,也是官网上介绍的一种方法