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