Компиляция Apache Doris непосредственно в Linux
В этом документе описано, как скомпилировать Apache Doris непосредственно в Linux (на примере Ubuntu 24.04 или более поздней версии), без использования образа Docker или LDB Toolchain.
Целевая аудитория, преимущества и недостатки
| Критерий | Описание |
|---|---|
| Целевая аудитория | Разработчики, использующие современный дистрибутив (например, Ubuntu 24.04+) и желающие работать с GCC, входящим в его состав |
| Преимущества | Минимум действий; установка зависимостей напрямую через системный менеджер пакетов |
| Недостатки | В старых дистрибутивах сборка может завершиться ошибкой из-за слишком старой версии GCC или glibc. В этом случае используйте LDB Toolchain |
Требования к окружению
| Компонент | Требования к версии |
|---|---|
| Операционная система | Ubuntu 24.04+ (или сопоставимая версия другого дистрибутива) |
| JDK | 8+ (для версии 2.1 и более ранних); 17 (для версии 3.0 и более поздних или ветки master) |
| GCC | 10+ |
| Python | 2.7+ |
| Apache Maven | 3.5+ |
| CMake | 3.19.2+ |
| Bison | 3.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).