소스에서 DuckDB 빌드하기

소스에서 DuckDB 빌드하기 (Building DuckDB from Source)

DuckDB 바이너리는 [설치 페이지]({% link install/index.html %})에서 stablepreview 빌드로 제공돼요. 대부분의 경우 이 바이너리를 사용하는 것이 권장되지만, 실험 플랫폼에서 실행하거나 아직 병합되지 않은 pull request를 빌드하려면 소스에서 직접 빌드할 수 있어요. 함께 알아볼까요?

출처: 문서

본문

언제 DuckDB를 빌드해야 하나요? (When Should You Build DuckDB?)

DuckDB 바이너리는 [설치 페이지]({% link install/index.html %})에서 stablepreview 빌드로 제공돼요. 대부분의 경우 이 바이너리를 사용하는 것이 권장돼요. 실험 플랫폼(예: [Raspberry Pi]({% link docs/current/dev/building/raspberry_pi.md %}))에서 실행 중이거나 아직 병합되지 않은 pull request를 위해 프로젝트를 빌드하고 싶다면, GitHub에 호스팅된 duckdb/duckdb 저장소를 기반으로 DuckDB를 소스에서 빌드할 수 있어요. 이 페이지는 DuckDB 빌드 단계를 설명해요.

빌드 지침 (Build Instructions)

사전 요구사항 (Prerequisites)

DuckDB는 CMake와 C++11 호환 컴파일러(예: GCC, Apple-Clang, MSVC)가 필요해요. 추가로 빌드 과정을 자동으로 병렬화하는 Ninja 빌드 시스템을 사용하는 것을 권장해요.

경고 DuckDB v2.0은 C++17을 요구할 거예요.

Makefile로 빌드 (Building with the Makefile)

Makefile이 빌드 과정을 감싸요. 대상과 구성 플래그는 [Build Configuration]({% link docs/current/dev/building/build_configuration.md %})을 참고하세요.

make
make release # same as plain make
make relassert
make debug
GEN=ninja make # for use with Ninja
BUILD_BENCHMARK=1 make # build with benchmarks

debug 빌드는 디스크 공간을 많이 사용해요 – 최소 25 GB가 확보되어 있는지 확인하세요.

이후 빌드 속도 높이기 (Speeding up Subsequent Builds)

ccache로 이후 빌드를 더 빠르게 할 수 있어요. macOS에서는 다음과 같이 설치하고 구성할 수 있어요:

brew install ccache
ccache -M 50G

플랫폼 (Platforms)

완전 지원 플랫폼 (Platforms with Full Support)

DuckDB는 Linux, macOS, Windows를 완전 지원해요. 이 플랫폼들에는 x86_64 (amd64)와 AArch64 (ARM64) 빌드가 모두 제공되고, 거의 모든 확장이 이 플랫폼들에 배포돼요.

플랫폼 이름 설명 (Description)
linux_amd64 glibc를 가진 Linux x86_64 (AMD64)
linux_arm64 glibc를 가진 Linux AArch64 (ARM64)
osx_amd64 macOS 12+ AMD64 (Intel CPUs)
osx_arm64 macOS 12+ ARM64 (Apple Silicon CPUs)
windows_amd64 Windows 10+ x86_64 (AMD64)
windows_arm64 Windows 10+ AArch64 (ARM64)

이 플랫폼들에는 최신 안정 버전과 프리뷰 버전(야간 빌드) 모두의 빌드가 제공돼요. 어떤 상황에서는 아직 병합되지 않은 pull request를 테스트하기 위해 등, 소스에서 DuckDB를 빌드하고 싶을 수도 있어요. 이 플랫폼들의 빌드 지침은 다음을 참고하세요:

  • [Linux]({% link docs/current/dev/building/linux.md %})
  • [macOS]({% link docs/current/dev/building/macos.md %})
  • [Windows]({% link docs/current/dev/building/windows.md %})

부분 지원 플랫폼 (Platforms with Partial Support)

부분적으로 지원되는 플랫폼이 여러 개 있어요. 일부 플랫폼에서는 DuckDB 바이너리와 확장(또는 [확장의 하위 집합]({% link docs/current/extensions/extension_distribution.md %}#platforms))이 배포돼요. 다른 것들은 소스에서 빌드가 가능해요.

플랫폼 이름 설명 (Description)
linux_amd64_musl musl libc를 가진 Linux x86_64 (AMD64), 예: Alpine Linux
linux_arm64_musl musl libc를 가진 Linux AArch64 (ARM64), 예: Alpine Linux
linux_arm64_android Android AArch64 (ARM64)
wasm_eh WebAssembly Exception Handling

아래에서 일부 플랫폼의 상세 빌드 지침을 제공해요:

  • [Android]({% link docs/current/dev/building/android.md %})
  • [Raspberry Pi]({% link docs/current/dev/building/raspberry_pi.md %})

최선 노력 지원 플랫폼 (Platforms with Best Effort Support)

플랫폼 이름 설명 (Description)
freebsd_amd64 FreeBSD x86_64 (AMD64)
freebsd_arm64 FreeBSD AArch64 (ARM64)
wasm_mvp WebAssembly Minimum Viable Product
windows_amd64_mingw MinGW를 가진 Windows 10+ x86_64 (AMD64)
windows_arm64_mingw MinGW를 가진 Windows 10+ AArch64 (ARM64)

이 플랫폼들은 DuckDB의 커뮤니티 지원에 포함되지 않아요. 상업적 지원에 대한 자세한 내용은 support policy 페이지를 참고하세요.

자세한 내용은 ["Unofficial and Unsupported Platforms" 페이지]({% link docs/current/dev/building/unofficial_and_unsupported_platforms.md %})도 참고하세요.

구식 플랫폼 (Outdated Platforms)

일부 플랫폼은 이전 DuckDB 버전에서 지원됐지만 더 이상 지원되지 않아요.

플랫폼 이름 설명 (Description)
linux_amd64_gcc4 GCC 4를 가진 Linux x86_64 (AMD64), 예: CentOS 7
linux_arm64_gcc4 GCC 4를 가진 Linux AArch64 (ARM64), 예: CentOS 7
windows_amd64_rtools RTools를 위한 Windows 10+ x86_64 (AMD64)

DuckDB는 macOS 11CentOS 7/8 같은 수명이 끝난 플랫폼에서도 macOS와 Linux용으로 제공되는 지침을 사용해 빌드할 수 있어요.

트러블슈팅 가이드 (Troubleshooting Guides)

DuckDB 빌드를 위한 트러블슈팅 가이드를 제공해요:

  • [일반적인 이슈 (Generic issues)]({% link docs/current/dev/building/troubleshooting.md %})
  • [Python]({% link docs/current/dev/building/python.md %})
  • [R]({% link docs/current/dev/building/r.md %})

더 알아보기 (Learn more)