levelDB(一):ソースコードコンパイルインストール

14713 ワード

1.ソースのダウンロード


gitを使用してソースをダウンロード
git clone https://github.com/google/leveldb.git

2.コンパイルインストール

cd leveldb/
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .

これにより、leveldb/build/ディレクトリの下に静的ライブラリlibleveveldbが生成する.a,この静的ライブラリを/usr/local/lib/,leveldb関連ヘッダファイルを/usr/local/include/にコピーする
sudo cp build/libleveldb.a /usr/local/lib/
sudo cp -r include/leveldb/ /usr/local/include/

3.テスト


新しいdemo.cc:
#include 
#include 
#include 
#include 

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 = "apple";
  std::string value = "A";
  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 << ") (value=" << get << ")" << std::endl;
  else std::cout << " !" << std::endl;

  delete db;

  return 0;
}

コンパイル、リンク(注意:欠落-pthreadオプションundefined reference to`pthread_create’)
g++ -o demo demo.cc -pthread -lleveldb -std=c++11
$ ./demo
 (key=apple) (value=A)

注意:


もう一つの方法がある.手順2に進み、次の操作を続行できます.

3テスト:


leveldbフォルダにappフォルダを新規作成する
cd leveldb #  level 
mkdir -p app

appフォルダにapp_を作成するtest.cc:
#include "leveldb/db.h"
#include 
#include 

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(), "KeyNameExample", "ValueExample");
    assert(status.ok());
    string res;
    status = db->Get(ReadOptions(), "KeyNameExample", &res);
    assert(status.ok());
    cout << res << endl;

    delete db;
    return 0;
}

次にleveldb/CMakeListsを変更します.txtファイル.次のように変更します.
$ git diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
index df486ea..a95c29a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -273,6 +273,7 @@ if(LEVELDB_BUILD_TESTS)
   leveldb_test("${PROJECT_SOURCE_DIR}/util/env_test.cc")

   if(NOT BUILD_SHARED_LIBS)
+    leveldb_test("${PROJECT_SOURCE_DIR}/app/app_test.cc")
     leveldb_test("${PROJECT_SOURCE_DIR}/db/autocompact_test.cc")
     leveldb_test("${PROJECT_SOURCE_DIR}/db/corruption_test.cc")
     leveldb_test("${PROJECT_SOURCE_DIR}/db/db_test.cc")

再コンパイル:
cd leveldb/build
cmake ..  #  CMakefileLists.txt , 。
make

注意:デバッグ可能なバージョンを生成したいプログラムであれば.ひずみは以下の通り
cd leveldb/build
cmake  -DCMAKE_BUILD_TYPE=Debug ..
make

buildフォルダにapp_が表示されますtestの実行可能ファイル.実行:
cd leveldb/build
./app_test
ValueExample

ValueExampleの出力が表示され、プログラムのコンパイルに成功したことを示します.

リファレンス


https://cheung.site/2018/10/16/leveldb-installation/https://zhuanlan.zhihu.com/p/34657032