跳到主要内容

Linux 平台直接编译 Apache Doris

本文介绍如何在 Linux(以 Ubuntu 24.04 及以上为例)系统上直接编译 Apache Doris,不借助 Docker 镜像或 LDB Toolchain。

适用人群与优缺点

维度说明
适用人群使用较新发行版(如 Ubuntu 24.04+)、希望使用系统自带 GCC 的开发者
优点步骤最少,直接使用系统包管理器安装依赖
缺点老旧发行版可能因 GCC 或 glibc 版本过旧无法编译,建议改用 LDB Toolchain

环境要求

组件版本要求
操作系统Ubuntu 24.04+(或同等版本的其他发行版)
JDK8+(2.1 及以下版本);17(3.0 及以上版本或 master 分支)
GCC10+
Python2.7+
Apache Maven3.5+
CMake3.19.2+
Bison3.0+

1. 安装 JDK

根据目标 Doris 版本选择 JDK:

# 编译 Doris 2.1 及以下版本,可安装 JDK 8
sudo apt install openjdk-8-jdk

# 编译 Doris 3.0 及以上版本或 master 分支,需要安装 JDK 17
sudo apt install openjdk-17-jdk

2. 安装系统依赖

sudo apt install build-essential maven cmake byacc flex automake libtool-bin bison binutils-dev libiberty-dev zip unzip libncurses5-dev curl git ninja-build python
sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
sudo apt update
sudo apt install gcc-10 g++-10
sudo apt-get install autoconf automake libtool autopoint

3. 检查是否支持 AVX2 指令集

cat /proc/cpuinfo | grep avx2

输出非空表示 CPU 支持 AVX2,可使用默认编译选项;否则需在编译时附加 USE_AVX2=0

4. 执行编译

# 默认编译支持 AVX2 的产物
sh build.sh

# CPU 不支持 AVX2 时需附加 USE_AVX2=0
USE_AVX2=0 sh build.sh

# 编译 Debug 版本 BE
BUILD_TYPE=Debug sh build.sh

5. 查看产物

编译完成后,产出文件位于源码根目录的 output/

FAQ

Q1: 老版本 Ubuntu/CentOS 是否可以直接编译?

老旧发行版的 GCC 与 glibc 版本通常过低,建议使用 LDB ToolchainDocker 镜像

Q2: 编译时报 AVX2 not supported

CPU 不支持 AVX2 指令集。重新运行 USE_AVX2=0 sh build.sh,并下载 no-avx2 系列预编译三方库。

Q3: 编译过程中遇到 Too many open files

通过 ulimit -n 65536 提高单进程文件句柄上限,或在 /etc/security/limits.conf 中永久配置。

Q4: 编译中途因内存不足被 kill?

提示 ninja failed with: signal: killed 通常是 OOM。改用至少 16 GB 内存的机器,或降低并发度(-j 参数)。

相关文档