(一)LevelDB源码编译与测试

1. LevelDB源码下载

环境:Ubuntu18.04(我使用的是wsl2)

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

#注意这里直接编译会报错,因为third_party目录下缺少googletest和benchmark
#所以下一步分别下载googletest和benchmark
cd third_party/
git clone https://github.com/google/googletest.git
git clone https://github.com/google/benchmark.git
cd ..

#准备工作完成,开始编译,需要等待较长时间
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .

#等待编译完成后将静态库加入/usr/local/lib中
cd ..
sudo cp build/libleveldb.a /usr/local/lib/
sudo cp -r include/leveldb/ /usr/local/include/

2. 静态库使用测试

随便找一个目录创建文件demo.cc
编写如下代码:

#include <iostream>
#include <string>
#include <leveldb/db.h>
using namespace std;
int main()
{
    leveldb::DB *db;
    leveldb::Options options;
    options.create_if_missing = true;
    leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
    cout <<"status:" << status.ok() << endl;
    if(!status.ok()){
        return 1;
    }
    string key = "apple";
    string value = "A";
    string get;

    leveldb::Status s = db->Put(leveldb::WriteOptions(), key, value);

    if (s.ok())
        s = db->Get(leveldb::ReadOptions(), key, &get);
    if (s.ok())
        cout << "key:" << key << "\nget value:" << get << std::endl;
    else
        cout << "error occurred!" << endl;

    delete db;

    return 0;
}

用g++链接-lleveldb库编译并运行

g++ -o demo demo.cc -pthread -lleveldb -std=c++11
./demo

我在执行编译命令时出现了报错,报错信息如下:
(.text+0x20): undefined reference to `main’ and undefined reference to function
后来发现是因为我的demo.cc路径错了,当前路径的demo.cc里面是空的!一定要检查仔细
查阅博客时发现链接顺序不同也可能导致这个错误
执行结果如下:
在这里插入图片描述
至此测试完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SZn..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值