---
title: "使用源码构建 OceanBase 数据库 | OceanBase 文档中心"
description: 使用源码构建 OceanBase 数据库 通过源代码，您可以自行构建 OceanBase 数据库，并测试其最新特性。本文介绍如何通过源代码构建 OceanBase 数据库。 前提条件 在构建 OceanBase 数据库之前，确保您的构建机器满足以下要求。 操作系统：CentOS 7/8 (x86 架构) 机器数量：1…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.1.3 社区版

# 使用源码构建 OceanBase 数据库

更新时间：2023-08-09 17:35:28

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V3.1.3/zh-CN/100.users-guide/300.installation-and-deployment/1300.build-oceanbase-database-by-using-source-code.md)  

通过源代码，您可以自行构建 OceanBase 数据库，并测试其最新特性。本文介绍如何通过源代码构建 OceanBase 数据库。

## 前提条件

在构建 OceanBase 数据库之前，确保您的构建机器满足以下要求。

- 操作系统：CentOS 7/8 (x86 架构)
 - 机器数量：1 台
 - 最低硬件规格：

     - CPU：4C8T Intel(R) Core i7-4770HQ @ 2.20GHz
     - 内存：16GB 1600MHz DDR3
     - 存储：空闲容量大于 50G 的机械硬盘
 - 推荐硬件规格：

     - CPU: 24C48T Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
     - 内存: 96GB 2400MHz DDR4
     - 存储: 空闲容量大于 50G 的 SSD

## 获取源代码

运行以下命令，克隆 OceanBase 数据库源代码到您的构建机器：

```shell
git clone git@${GIT_MIRROR_ADDRESS}/oceanbase/oceanbase

```

> **注意**
>
>  
>
> 克隆代码需要先安装配置 Git。详细信息，参考 [Git 文档](https://git-scm.com/doc)。

## 获取构建依赖

您可以通过以下方式获取构建依赖。

### 方案一：使用 yum 源获取依赖包（推荐）

构建过程中，您所依赖的大多数工具和库都可以通过公共 yum 源及 OceanBase 的官方 yum 源获取。如您的操作系统在我们的支持范围内，您可以通过我们预制的脚本，直接下载对应的软件包以节约您的构建时间

1. 安装必要的工具

   您需要提前准备好以下软件：

   ```bash
   yum install wget rpm* cpio make glibc-devel glibc-headers

   ```
 2. 执行以下命令确认您的编译机可以访问 OceanBase 官方 yum 源

   ```shell
   curl http://mirrors.aliyun.com/oceanbase/OceanBase.repo

   ```
 3. 执行初始化脚本，下载构建依赖

   ```shell
   # 进入代码根目录
   cd oceanbase

   # 执行build.sh脚本并传入init参数
   sh build.sh init

   ```

### 方案二：自行编译依赖

您也可以在 `deps/3rd` 目录下自行编译依赖。构建软件要求见下表：

| **所****需软****件** | **推荐版本（最低版本）** | **软件用途** | **提供依赖** | **必选** |
| --- | --- | --- | --- | --- |
| cmake | 3.20.0 | 构建工具 | 是 | 是 |
| make | 3.8.2 | 构建工具 | 否 | 是 |
| gcc | 5.2.0 | 构建工具/依赖库 | 是 | 是 |
| llvm/clang/lld | 11.0.1 (7.1.0) | 构建工具 | 是 | 是 |
| binutils | 2.30 | 构建工具 | 是 | 否 |
| flex | 2.5.35 | 代码生成 | 是 | 仅开发 |
| python2 | 2.7(2.6) | 代码生成 | 否 | 仅开发 |
| bison | 2.4.1 | 代码生成 | 是 | 仅开发 |
| ccache | 3.7.12 | 构建工具 | 是 | 否 |
| isa-l | 2.22.0 | 依赖库 | 是 | 是 |
| libaio | 0.3.112(0.3.109) | 依赖库 | 是 | 是 |
| libcurl | 7.29.0 | 依赖库 | 是 | 是 |
| libunwind | 1.5.0 | 依赖库 | 是 | 是 |
| mariadb-connector-c | 3.1.12 | 依赖库 | 是 | 是 |
| openssl-static | 1.0.1e | 依赖库 | 是 | 是 |
| glibc-devel/glibc-headers | 2.17 | 依赖库 | 否 | 是 |
| oss-c-sdk | 3.9.2 | 依赖库 | 否 | 否 |
| rpm* | 4.14.1(4.11) | 打包工具 | 否 | 仅打包 |

## 构建/打包 OceanBase 数据库

OceanBase 数据库使用 CMake 作为构建工具，您可以直接使用 CMake 命令自行创建目录进行构建，也可以使用 `build.sh` 脚本使用预制的构建选项进行构建：

- DEBUG 构建

  ```shell
  # 在源码目录下执行debug版的预制构建命令
  sh build.sh debug

  # 进入生成的 debug 构建目录
  cd build_debug

  # 进行构建
  make -j{N} observer

  # 查看构建产物
  stat src/observer/observer

  ```
 - RELEASE 构建

  ```shell
  # 在源码目录下执行 release 版的预制构建命令
  sh build.sh release

  # 进入生成的 release 构建目录
  cd build_release

  # 进行构建
  make -j{N} observer

  # 查看构建产物
  stat src/observer/observer

  ```
 - 创建 RPM 包

  ```shell
  # 在源码目录下执行 rpm包 的预制构建命令
  sh build.sh rpm

  # 进入生成的 rpm 打包目录
  cd build_rpm

  # 构建 rpm 包依赖的文件
  make -j{N} rpm

  # 查看构建产物
  stat *rpm

  ```

> **说明**
>
>  
>
> 为加快构建速度，您可以使用 `-j` 参数并行构建。并行数量 `N` 建议为 min(CPU（Core）* 2，内存（GB) / 2)。

## 构建选项说明

构建参数说明见下表：

| **构建选项** | **默认值** | **软件用途** |
| --- | --- | --- |
| OB_USE_LLVM_LIBTOOLS | ON | 使用 llvm-ar/ld.lld 等作为库工具，关闭则使用 binutils。 |
| OB_USE_CLANG | ON | 使用 clang 作为编译器，关闭则使用 gcc。 |
| OB_COMPRESS_DEBUG_SECTIONS | OFF | 压缩二进制中的 DEBUG SECTIONS。 |
| OB_STATIC_LINK_LGPL_DEPS | ON（打包时OFF） | 静态链接 LGPL 协议的依赖。 |
| OB_ENABLE_PCH | ON | 启用预编译头 。 |
| OB_ENALBE_UNITY | ON | 启用联合构建 。 |
| OB_USE_CCACHE | OFF | 启用编译缓存 。 |
| ENABLE_DEBUG_LOG | OFF | 开启调试日志。 |

## 后续操作

您在成功构建 OceanBase 数据库之后，可以使用 OBD 部署 OceanBase 数据库。详细信息请参考 [使用 OBD 部署 OceanBase 数据库](https://www.oceanbase.com/docs/community-observer-cn-10000000000096602)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
