http://blog.sina.com.cn/s/blog_560e310001015jfx.html
一、下载LevelDB包
我下载的是:leveldb-1.4.0.tar.gz
git clone https://code.google.com/p/leveldb/
有些时候 上面不要加s的http
二、我在Ubunt上编译
解压之后进入目录:leveldb-1.4.0
执行:make,生成了: libleveldb.a
三、拷贝相应头文件到:/usr/local/include目录(需要root权限)
执行命令:
sudo cp -r include/leveldb /usr/local/include
范例:
- #include <assert.h>
- #include <string.h>
- #include <leveldb/db.h>
- #include <iostream>
- 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());
- //write key1,value1
- std::string key="key";
- std::string value = "value";
- status = db->Put(leveldb::WriteOptions(), key,value);
- assert(status.ok());
- status = db->Get(leveldb::ReadOptions(), key, &value);
- assert(status.ok());
- std::cout<<value<<std::endl;
- std::string key2 = "key2";
- //move the value under key to key2
- status = db->Put(leveldb::WriteOptions(),key2,value);
- assert(status.ok());
- status = db->Delete(leveldb::WriteOptions(), key);
- assert(status.ok());
- status = db->Get(leveldb::ReadOptions(),key2, &value);
- assert(status.ok());
- std::cout<<key2<<"==="<<value<<std::endl;
- status = db->Get(leveldb::ReadOptions(),key, &value);
- if(!status.ok()) std::cerr<<key<<" "<<status.ToString()<<std::endl;
- else std::cout<<key<<"==="<<value<<std::endl;
- delete db;
- return 0;
- }
编译: g++ -o test test.cc libleveldb.a -lpthread