Zum Inhalt springen

Inoffizielle und nicht unterstützte Plattformen

Warning Die auf dieser Seite aufgeführten Plattformen werden nicht offiziell unterstützt. Die Build-Anweisungen werden nach bestem Wissen bereitgestellt. Community-Beiträge sind sehr willkommen.

DuckDB wird für mehrere Plattformen mit unterschiedlichen Unterstützungsstufen gebaut und ausgeliefert. DuckDB kann für andere Plattformen mit unterschiedlichem Erfolg gebaut werden. Diese Seite gibt einen Überblick darüber, mit dem Ziel klarzustellen, welche Plattformen voraussichtlich funktionieren.

32-Bit-Architekturen

32-Bit-Architekturen werden offiziell nicht unterstützt, aber für einige dieser Plattformen lässt sich DuckDB manuell bauen. Siehe zum Beispiel die Build-Anweisungen für 32-Bit-Raspberry-Pi-Boards.

Beachten Sie, dass 32-Bit-Plattformen aufgrund des adressierbaren Speichers auf 4 GiB RAM beschränkt sind.

Big-Endian-Architekturen

Big-Endian-Architekturen (etwa PowerPC) werden von DuckDB nicht unterstützt. DuckDB lässt sich auf solchen Architekturen wahrscheinlich bauen, die entstehende Binärdatei kann bei bestimmten Operationen jedoch Korrektheitsfehler aufweisen. Daher wird von der Verwendung abgeraten.

RISC-V-Architekturen

Nativer Build (empfohlen)

DuckDB baut nativ auf 64-Bit-RISC-V-Boards ohne besondere Flags. Getestet auf einem BananaPi F3 (SpacemiT K1, rv64gc, 8 Kerne @ 1,6 GHz, 16 GB RAM) mit Debian Trixie:

Terminal window
sudo apt-get update
sudo apt-get install -y git g++ cmake ninja-build
git clone --depth=1 https://github.com/duckdb/duckdb
cd duckdb
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

Die Build-Zeit beträgt etwa 2 Stunden auf einem 8-Kern-SpacemiT-K1. Die entstehende Binärdatei funktioniert ohne weitere Anpassungen:

Terminal window
./duckdb -c “SELECT 'Hello from RISC-V' AS message;
┌───────────────────┐
│ message │
│ varchar │
├───────────────────┤
│ Hello from RISC-V │
└───────────────────┘

Aggregationsabfragen funktionieren wie erwartet:

Terminal window
./duckdb -c “CREATE TABLE test AS SELECT range AS id, range * 3.14 AS value FROM range(1000);
SELECT count(*) AS cnt, round(avg(value), 2) AS avg_val FROM test;
┌───────┬─────────┐
│ cnt │ avg_val │
│ int64 │ double │
├───────┼─────────┤
│ 1000 │ 1568.43 │
└───────┴─────────┘

Das DuckDB-Python-Paket lässt sich auf riscv64 ebenfalls erfolgreich aus dem Quellcode bauen:

Terminal window
pip install duckdb --no-binary duckdb

Build mit RVV (RISC-V Vector Extension)

Auf Boards mit Unterstützung für RVV 1.0 (z. B. SpacemiT K3 mit vlen 256) können Sie Vektorinstruktionen für bessere Leistung aktivieren. Der Nutzer „LivingLinux“ auf Bluesky hat DuckDB mit RVV gebaut und ein Video dazu veröffentlicht:

Terminal window
GEN=ninja \
CC='gcc-14 -march=rv64gcv_zicsr_zifencei_zihintpause_zvl256b' \
CXX='g++-14 -march=rv64gcv_zicsr_zifencei_zihintpause_zvl256b' \
BUILD_EXTENSIONS='fts' \
make

Cross-Compilation

Wer keine RISC-V-Hardware hat, kann DuckDB mit der riscv-gnu-toolchain cross-kompilieren:

Terminal window
GEN=ninja \
CC='riscv64-linux-gnu-gcc -march=rv64gcv_zicsr_zifencei_zihintpause_zvl256b' \
CXX='riscv64-linux-gnu-g++ -march=rv64gcv_zicsr_zifencei_zihintpause_zvl256b' \
make

Weitere Informationen zur DuckDB-RISC-V-Cross-Compilation finden Sie in mocusez/duckdb-riscv-ci und im DuckDB-Pull-Request #16549.

Bekannte Probleme

Plattform wird falsch gemeldet

Seit Version 1.5.2 meldet DuckDB die Plattform fälschlicherweise als amd64 für nicht unterstützte Plattformen wie RISC-V. Dadurch wird eine falsche Erweiterungsbinärdatei heruntergeladen. Derzeit sind Erweiterungen nur für offiziell unterstützte Plattformen verfügbar. Um eine Erweiterung zu nutzen, müssen Sie sie selbst bauen, z. B. mit dem Flag BUILD_EXTENSIONS.