Перейти к содержимому
Последнее обновление

Компиляция Apache Doris непосредственно в Linux

В этом документе описано, как скомпилировать Apache Doris непосредственно в Linux (на примере Ubuntu 24.04 или более поздней версии), без использования образа 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​

Выберите JDK в зависимости от версии Doris, которую собираетесь компилировать:

# To compile Doris 2.1 or earlier, install JDK 8
sudo apt install openjdk-8-jdk

# To compile Doris 3.0 or later, or the master branch, install 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. Проверьте, поддерживает ли CPU AVX2​

cat /proc/cpuinfo | grep avx2

Непустой вывод означает, что CPU поддерживает AVX2 и можно использовать параметры компиляции по умолчанию. В противном случае добавьте USE_AVX2=0 к команде сборки.

4. Запустите сборку​

# Default build, producing AVX2-enabled artifacts
sh build.sh

# When the CPU does not support AVX2, append USE_AVX2=0
USE_AVX2=0 sh build.sh

# Build a Debug version of BE
BUILD_TYPE=Debug sh build.sh

5. Найдите результаты сборки​

После завершения сборки её результаты находятся в каталоге output/ в корне дерева исходного кода.

Часто задаваемые вопросы​

Q1: Можно ли выполнять компиляцию напрямую в старых версиях Ubuntu или CentOS?​

Старые дистрибутивы обычно поставляются со слишком старыми версиями GCC и glibc. Используйте LDB Toolchain или образ Docker.

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: Сборка принудительно прерывается из-за нехватки памяти.​

Сообщение ninja failed with: signal: killed обычно указывает на нехватку памяти (OOM). Используйте машину с объёмом памяти не менее 16 ГБ или уменьшите степень параллелизма (параметр -j).