최종 수정: 에
Linux에서 Apache Doris 직접 컴파일하기
이 문서는 Docker 이미지나 LDB Toolchain을 사용하지 않고 Linux에서 Apache Doris를 직접 컴파일하는 방법을 설명합니다. 예시 환경은 Ubuntu 24.04 이상입니다.
대상 독자와 장단점
| 항목 | 설명 |
|---|---|
| 대상 독자 | 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 설치
컴파일할 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 매개변수)을 낮추세요.