Linux系统下levelDB的安装和使用
下载leveDB源码
登录网站https://github.com/google/leveldb,点击Download
levelDB的编译
1、通过命令解压源码
unzip leveldb-main.zip
2、编译源码
cd leveldb-main
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
注:编译前保证cmake已安装,且版本>=3.9,cmake版本升级方法见文末。
从官网下载的源码编译会报如下错误:
这里主要是缺少第三方组件googletest和benchmark
进入third_party目录,我们会发现相关组件目录为空,因此需要下载相关组件才能完成编译。在github的工程源码的third_party目录下有googletest和benchmark的下载链接,点击下载后将其解压到对于目录。
第三方组件解压后如下:
再次进入build目录,执行如下命令进行编译
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
编译结果如下:
至此,编译完成,编译结果如下:
3 执行测试:
./leveldb_tests
./leveldb_tests
4 安装leveldb库
sudo make install
leveDB的使用
下面以一个简单的demo程序来展示levedb的应用:
demo.cpp
#include <cassert>
#include <iostream>
#include <string>
#include <leveldb/db.h>
int main()
{
leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
assert(status.ok());
std::string key = "test_key";
std::string value = "test_value";
std::string get;
leveldb::Status s = db->Put(leveldb::WriteOptions(), key, value);
if (s.ok())
s = db->Get(leveldb::ReadOptions(), key, &get);
if (s.ok())
std::cout << "key=" << key << "\nvalue=" << get << std::endl;
else
std::cout << "failed to find the key!" << std::endl;
delete db;
return 0;
}
编译运行:
g++ -o demo demo.cpp -pthread -lleveldb
./demo
结果如下:
cmake版本升级
可通过如下命令查看cmake版本:
cmake --version
如果cmake版本过低,需下载新版本。
//文件下载解压
wget https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz
//解压
tar zxvf cmake-3.12.2-Linux-x86_64.tar.gz
//创建软链接
mv cmake-3.12.2-Linux-x86_64 /opt/cmake-3.12.2
ln -sf /opt/cmake-3.12.2/bin/* /usr/bin/