【RocksDB】Ubuntu18.04下编译rocksdb

最近的新项目是NewSQL,底层存储引擎是rocksdb,于是在Ubuntu下编译了一下,下面是编译过程:

首先安装依赖的包以及组件:

安装gcc、g++及make

sudo apt-get install build-essential

安装gflags

sudo apt-get install libgflags-dev

安装snappy

sudo apt-get install libsnappy-dev

安装zlib

sudo apt-get install zlib1g-dev

安装bzip2

sudo apt-get install libbz2-dev

安装lz4

sudo apt-get install liblz4-dev

安装zstandard

sudo apt-get install libzstd-dev

安装cmake

官网下载地址:https://cmake.org/download/
【RocksDB】Ubuntu18.04下编译rocksdb_第1张图片

wget https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0.tar.gz

解压:

tar -zxvf cmake-3.17.0.tar.gz

执行:

cd cmake-3.17.0
./bootstrap
make -j8
sudo make install

查看版本号:

cmake --version

结果如下即代表安装成功。
在这里插入图片描述

编译rocksdb

rocksdb github地址:https://github.com/facebook/rocksdb
1.下载rocksdb源码并解压

wget https://github.com/facebook/rocksdb/archive/master.zip
unzip master.zip
cd rocksdb-master
#生成静态库
make static_lib
#生成动态库
make shared_lib

2.复制.h文件到/usr/lib中。

cp -r include/* /usr/include
sudo cp librocksdb.so.6.9.0 /usr/lib
sudo ln -s /usr/lib/librocksdb.so.6.9.0 /usr/lib/librocksdb.so.6.9
sudo ln -s /usr/lib/librocksdb.so.6.9.0 /usr/lib/librocksdb.so.6
sudo ln -s /usr/lib/librocksdb.so.6.9.0 /usr/lib/librocksdb.so

3.设置环境变量。

vi /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/lib
source /etc/profile

4.创建文件夹:

mkdir /tmp/rocksdbResult

5.编写测试文件rocksdbtest.cpp:

vi rocksdbtest.cpp
#include 
#include 
#include "rocksdb/db.h"
#include "rocksdb/slice.h"
#include "rocksdb/options.h"
using namespace std;
using namespace rocksdb;
const std::string PATH = "/tmp/rocksdbResult";
int main(){
    DB* db;
    Options options;
    options.create_if_missing = true;
    Status status = DB::Open(options, PATH, &db);
    assert(status.ok());
    Slice key("foo");
    Slice value("bar");
    std::string get_value;
    status = db->Put(WriteOptions(), key, value);
    if(status.ok()){
        status = db->Get(ReadOptions(), key, &get_value);
        if(status.ok()){
            printf("get %s\n", get_value.c_str());
            printf("get success\n"); 
        }else{
            printf("get failed\n"); 
        }
    }else{
        printf("put failed\n");
    }
    delete db;
}

6.编译运行该文件:

g++ -std=c++11 -o rocksdbtest rocksdbtest.cpp -lpthread -lrocksdb -ldl
./rocksdbtest

结果如下代表编译测试成功:
在这里插入图片描述

Clion编译

工欲善其事,必先利其器。一个好的IDE能够为我们的开发提升很高的效率,这里我选择Clion作为rocksdb开发的IDE。CLion是Jetbrains公司旗下新推出的一款专为开发C/C++所设计的跨平台IDE。因为Clion依赖于java,所以我们先装openJDK。

安装openJDK

sudo apt-get install openjdk-8-jdk

安装Clion

下载地址:https://www.jetbrains.com/clion/download/
执行下列命令:

wget https://download-cf.jetbrains.com/cpp/CLion-2019.3.5.tar.gz
tar -zxvf CLion-2019.3.5.tar.gz
cd CLion-2019.3.5/bin
./clion.sh

build rocksdb

点击New CMake Project from Sources,选择rocksdb-master文件夹:
【RocksDB】Ubuntu18.04下编译rocksdb_第2张图片
点击Build -> Build Project,等待编译完成,如下即为成功:
【RocksDB】Ubuntu18.04下编译rocksdb_第3张图片

测试rocksdbtest

在CMakeLists中加入代码:
【RocksDB】Ubuntu18.04下编译rocksdb_第4张图片
点击reload changes,选择rocksdb_rocksdbtest,可运行或者debug调试。
【RocksDB】Ubuntu18.04下编译rocksdb_第5张图片
写这篇文章主要是为了记录一下Ubuntu下编译rocksdb的过程,之前在网上没看到介绍比较详细的文章。这是我第一次接触rocksdb,之后也争取抽时间记录一下rocksdb学习过程。

你可能感兴趣的:(RocksDB,ubuntu,数据库)