---
title: 源码编译安装
description: "获取源码的方式有两种，文档中默认使用第一种方式。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/RocksDB/openmind_rocksdb6102_03_0014.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/RocksDB/openmind_rocksdb6102_03_0014.html
indexId: a6d63d8c1dfd93f153cbfd9195f2e76358eeb081150475d8986b0367d08e69dd79
---
# 源码编译安装

获取源码的方式有两种，文档中默认使用第一种方式。

- 若服务器可以访问网络，则可以直接在服务器上使用wget命令下载源码。
- 若服务器无法访问外网，则可以通过浏览器下载源码包，并上传至服务器“/home”目录。
- 源码下载地址参考  环境要求
部分。


1. 获取RocksDB源码包。

  a. 在本地浏览器下载    RocksDB源码(https://github.com/facebook/rocksdb/archive/refs/tags/v6.10.2.tar.gz)
。
  b. 将源码复制至服务器“/home”目录。
若服务器可以访问网络，则可以直接在服务器上使用wget命令下载源码。

```
cd /home
wget https://github.com/facebook/rocksdb/archive/refs/tags/v6.10.2.tar.gz
mv v6.10.2.tar.gz rocksdb-6.10.2.tar.gz
```


2. 进入“/home”目录。
  1 cd /home

3. 解压RocksDB安装包。
  1 tar -zxvf rocksdb-6.10.2.tar.gz

4. 进入解压目录。
  1 cd rocksdb-6.10.2/

5. 修改CMake编译配置文件。

```
vim CMakeLists.txt
```


  按照源码包中的配置文件进行编译，会在生成benchmark工具时，出现所需静态库找不到的错误。需修改CMakeLists.txt配置文件以解决该问题。具体操作为在第1186行添加如下代码段：

```
add_subdirectory(third-party/gtest-1.8.1/fused-src/gtest)
add_library(testharness STATIC
test_util/testharness.cc)
target_link_libraries(testharness gtest)
```


  编辑前：

  编辑后：

6. 创建目录。

```
mkdir build
```


7. 进入创建的目录。
  1 cd build

8. 编译配置。
  1 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rocksdb -DWITH_SNAPPY=1 -DWITH_ZLIB=1 -DWITH_LZ4=1 -DWITH_ZSTD=1 -DWITH_BZ2=1 ..

9. 执行编译命令。
  1 make -j

  如果编译报错提示，参考编译RocksDB过程中提示Cannot allocate memory的解决方法。

10. 执行安装命令。
  1 make install

11. 将工具移动到安装目录。
  1 cp ../utilities/merge_operators.h /usr/local/rocksdb/include/rocksdb/utilities/

  1 mkdir -p /usr/local/rocksdb/tools

  1 cp -p ./tools/ldb /usr/local/rocksdb/tools

  1 cp -p ./tools/sst_dump /usr/local/rocksdb/tools

12. 查看安装目录。
  1 ls /usr/local/rocksdb

13. 配置环境变量。

```
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/rocksdb/include/
```

```
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/rocksdb/lib64/
```

```
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/rocksdb/lib64/
```

```
export PATH=$PATH:/usr/local/rocksdb/tools
```
