소스에서 DuckDB 빌드하기
소스에서 DuckDB 빌드하기 (Building DuckDB from Source)
DuckDB 바이너리는 [설치 페이지]({% link install/index.html %})에서 stable 및 preview 빌드로 제공돼요. 대부분의 경우 이 바이너리를 사용하는 것이 권장되지만, 실험 플랫폼에서 실행하거나 아직 병합되지 않은 pull request를 빌드하려면 소스에서 직접 빌드할 수 있어요. 함께 알아볼까요?
출처: 문서
본문
언제 DuckDB를 빌드해야 하나요? (When Should You Build DuckDB?)
DuckDB 바이너리는 [설치 페이지]({% link install/index.html %})에서 stable 및 preview 빌드로 제공돼요.
대부분의 경우 이 바이너리를 사용하는 것이 권장돼요.
실험 플랫폼(예: [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 11과 CentOS 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 %})