Zum Inhalt springen

DuckDB aus dem Quellcode bauen

Wann sollten Sie DuckDB bauen?

DuckDB-Binärdateien gibt es für stabile und Preview-Builds auf der Installationsseite. In den meisten Fällen empfiehlt sich die Nutzung dieser Binärdateien. Wenn Sie auf einer experimentellen Plattform arbeiten (z. B. Raspberry Pi) oder das Projekt für einen noch nicht gemergten Pull Request bauen möchten, können Sie DuckDB aus dem Quellcode auf Basis des auf GitHub gehosteten Repositories duckdb/duckdb bauen. Diese Seite erklärt die Schritte zum Bauen von DuckDB.

Build-Anleitung

Voraussetzungen

DuckDB benötigt CMake und einen C++11-konformen Compiler (z. B. GCC, Apple-Clang, MSVC). Zusätzlich empfehlen wir das Ninja-Buildsystem, das den Build automatisch parallelisiert.

Warning DuckDB v2.0 wird C++17 voraussetzen.

Bauen mit dem Makefile

Ein Makefile kapselt den Build-Prozess. Ziele und Konfigurationsflags stehen unter Build-Konfiguration.

Terminal window
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-Builds brauchen viel Speicherplatz – stellen Sie sicher, dass mindestens 25 GB verfügbar sind.

Folge-Builds beschleunigen

Sie können Folge-Builds mit ccache beschleunigen. Unter macOS installieren und konfigurieren Sie es wie folgt:

Terminal window
brew install ccache
ccache -M 50G

Plattformen

Plattformen mit voller Unterstützung

DuckDB unterstützt Linux, macOS und Windows vollständig. Für diese Plattformen gibt es Builds für x86_64 (amd64) und AArch64 (ARM64), und fast alle Erweiterungen werden für diese Plattformen verteilt.

Plattformname Beschreibung
linux_amd64 Linux x86_64 (AMD64) mit glibc
linux_arm64 Linux AArch64 (ARM64) mit glibc
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)

Für diese Plattformen gibt es Builds sowohl der aktuellen stabilen Version als auch der Preview-Version (Nightly-Build). In manchen Fällen möchten Sie DuckDB trotzdem aus dem Quellcode bauen, z. B. um einen noch nicht gemergten Pull Request zu testen. Build-Anleitungen für diese Plattformen:

Plattformen mit teilweiser Unterstützung

Es gibt mehrere teilweise unterstützte Plattformen. Für manche Plattformen werden DuckDB-Binärdateien und Erweiterungen (oder eine Teilmenge der Erweiterungen) verteilt. Für andere ist das Bauen aus dem Quellcode möglich.

Plattformname Beschreibung
linux_amd64_musl Linux x86_64 (AMD64) mit musl libc, z. B. Alpine Linux
linux_arm64_musl Linux AArch64 (ARM64) mit musl libc, z. B. Alpine Linux
linux_arm64_android Android AArch64 (ARM64)
wasm_eh WebAssembly Exception Handling

Unten stehen detaillierte Build-Anleitungen für einige Plattformen:

Plattformen mit Best-Effort-Unterstützung

Plattformname Beschreibung
freebsd_amd64 FreeBSD x86_64 (AMD64)
freebsd_arm64 FreeBSD AArch64 (ARM64)
wasm_mvp WebAssembly Minimum Viable Product
windows_amd64_mingw Windows 10+ x86_64 (AMD64) mit MinGW
windows_arm64_mingw Windows 10+ AArch64 (ARM64) mit MinGW

Diese Plattformen sind nicht durch den Community-Support von DuckDB abgedeckt. Details zum kommerziellen Support stehen auf der Seite Support Policy.

Siehe auch die Seite „Inoffizielle und nicht unterstützte Plattformen“.

Veraltete Plattformen

Einige Plattformen wurden in älteren DuckDB-Versionen unterstützt, werden aber nicht mehr unterstützt.

Plattformname Beschreibung
linux_amd64_gcc4 Linux x86_64 (AMD64) mit GCC 4, z. B. CentOS 7
linux_arm64_gcc4 Linux AArch64 (ARM64) mit GCC 4, z. B. CentOS 7
windows_amd64_rtools Windows 10+ x86_64 (AMD64) für RTools

DuckDB lässt sich auch für End-of-Life-Plattformen wie macOS 11 und CentOS 7/8 nach den Anleitungen für macOS und Linux bauen.

Amalgamation-Build

DuckDB lässt sich als einzelnes Paar aus C++-Header und Quelldatei (duckdb.hpp und duckdb.cpp) mit etwa 0,5 Mio. Zeilen Code bauen. Um diese Datei zu erzeugen, führen Sie aus:

Terminal window
python scripts/amalgamation.py

Beachten Sie, dass der Amalgamation-Build nach bestem Aufwand bereitgestellt wird und nicht offiziell unterstützt ist.

Einschränkungen

Derzeit hat DuckDB die folgenden bekannten Einschränkungen zur Compile-Zeit:

  • Das Build-Flag -march=native, also das Kompilieren von DuckDB mit dem nativen Befehlssatz der lokalen Maschine, wird nicht unterstützt.

Anleitungen zur Fehlerbehebung

Wir stellen Anleitungen zur Fehlerbehebung beim Bauen von DuckDB bereit: