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.
makemake release # same as plain makemake relassertmake debugGEN=ninja make # for use with NinjaBUILD_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:
brew install ccacheccache -M 50GPlattformen
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:
python scripts/amalgamation.pyBeachten 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: