1.首先从官网上下载leveldb进行编译

git clone https://github.com/google/leveldb.git
cd leveldb
make

2.将头文件和动态链接库拷到系统文件里,创建软连接,执行ldconfig命令,将动态链接库加到缓存中,使得系统可以真正使用这个动态链接库

scp -r out-static/lib* out-shared/lib* /usr/local/lib/
cd include/
scp -r leveldb /usr/local/include/
cd leveldb
rm -f /usr/local/lib/libleveldb*
scp -r out-static/lib* out-shared/lib* /usr/local/lib/
scp -r out-static/lib* out-shared/lib* /usr/local/lib/
ls -l /usr/local/lib/libleveldb*
ldconfig

3.写一个样例代码main.cc测试安装好的leveldb

#include "leveldb/db.h"
#include <cassert>
#include <iostream>

using namespace std;
using namespace leveldb;

int main() {
    leveldb::DB *db;
    leveldb::Options options;
    options.create_if_missing = true;
    leveldb::Status status = leveldb::DB::Open(options, "testdb", &db);
    assert(status.ok());

    status = db->Put(WriteOptions(), "test", "Hello World!");
    assert(status.ok());
    string res;
    status = db->Get(ReadOptions(), "test", &res);
    assert(status.ok());
    cout << res << endl;

    delete db;
    return 0;
}

4.动态链接库编译如下,动态链接库不需要在当前文件下,系统能自动到相关路径下查找

g++ main.cc -o main -lpthread -lleveldb

注意:一定要加-lpthread,因为leveldb有用到线程相关调用。

5.运行编译好的文件

./main

输出结果:

Hello World!

6.再尝试一下小程序mytest.cc

#include <iostream>
#include <cassert>
#include <cstdlib>
#include <string>
#include <leveldb/db.h>
using namespace std;
int main(void)
{
    leveldb::DB *db;
    leveldb::Options options;
    options.create_if_missing=true;
    leveldb::Status status = leveldb::DB::Open(options,"./testdb",&db);
    assert(status.ok());
    std::string key1="people";
    std::string value1="jason";
    std::string value;
    leveldb::Status s=db->Put(leveldb::WriteOptions(),key1,value1);
    if(s.ok())
        s=db->Get(leveldb::ReadOptions(),"people",&value);
    if(s.ok())
        cout<<value<<endl;
    else
        cout<<s.ToString()<<endl;
    delete db;
    return 0;
}

7.运行编译好的文件

./mytest

输出结果

jason

 

参考文献:

1.http://luodw.cc/2015/10/14/leveldb-01/

2.https://gist.github.com/dustismo/6203329

3.https://zhuanlan.zhihu.com/p/27329248

  

版权声明:本文为xueqiuqiu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xueqiuqiu/p/8268814.html