본문으로 건너뛰기
최종 수정: 에

Linux에서 Apache Doris 직접 컴파일하기

이 문서는 Docker 이미지나 LDB Toolchain을 사용하지 않고 Linux에서 Apache Doris를 직접 컴파일하는 방법을 설명합니다. 예시 환경은 Ubuntu 24.04 이상입니다.

대상 독자와 장단점​

항목설명
대상 독자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를 선택합니다.

# 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 GB 이상인 머신을 사용하거나 병렬 처리 수준(-j 매개변수)을 낮추세요.