Linux下编译与安装leveldb

LevelDB简介

LevelDB 是一个可持久化的KV数据库引擎。由Google的工程师Jeff Dean和Sanjay Ghemawat开发。

LevelDB源码下载方式

linux下cd到要保存的目录,例如我保存在/home/leveldb/下

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

LevelDB的编译与安装

使用cmake来编译

1. 解压 编译 安装cmake

tar -zxvf cmake-3.12.2.tar.gz   (解压)
cd cmake-3.12.2/
mv cmake-3.12.2-Linux-x86_64 /opt/cmake-3.12.2    (移动至opt目录下)
ln -sf /opt/cmake-3.12.2/bin/* /usr/bin/   (创建软链接)

2. leveldb的编译安装

cd /home/leveldb/

mkdir -p build && cd build  (创建build目录)

cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .      (执行编译)

 

编译过程中会遇到以下问题:

CMake Error at CMakeLists.txt:299 (add_subdirectory):
  The source directory

   ../leveldb/third_party/googletest

  does not contain a CMakeLists.txt file.


CMake Error at CMakeLists.txt:303 (set_property):
  set_property could not find TARGET gtest.  Perhaps it has not yet been
  created.


CMake Error at CMakeLists.txt:305 (set_property):
  set_property could not find TARGET gmock.  Perhaps it has not yet been
  created.

 

在网上查了好多资源,结合具体的错误日志分析到原因:

最新的commit是支持了googletest,但只是在cmake里面加了googletest,并没有在项目里加入第三方库,所以cmake报错(第三方库未更新)

解决方法:

git clone https://github.com/google/googletest

git submodule update --init --recursive 

重新执行cmake命令, 编译通过!

个人总结:

leveldb编译其实并不难,难的是这个过程中遇到问题如何排查,如何通过日志一步步分析原因,这个排查过程对一个人的提高是很大的。

 

 

你可能感兴趣的:(c++,linux,cmake)