Zum Inhalt springen

macOS

Voraussetzungen

Installieren Sie Xcode und Homebrew. Installieren Sie anschließend die benötigten Pakete mit:

Terminal window
brew install git cmake ninja

DuckDB bauen

Klonen und bauen Sie DuckDB wie folgt.

Terminal window
git clone https://github.com/duckdb/duckdb
cd duckdb
GEN=ninja make

Wenn der Build erfolgreich abgeschlossen ist, finden Sie die Binärdatei duckdb im Verzeichnis build:

Terminal window
build/release/duckdb

Für andere Build-Konfigurationen (debug, relassert usw.) siehe die Seite Build-Konfiguration.

Fehlerbehebung

Build-Fehler: 'string' file not found

Problem: Der Build schlägt unter macOS mit folgendem Fehler fehl:

Terminal window
FAILED: third_party/libpg_query/CMakeFiles/duckdb_pg_query.dir/src_backend_nodes_list.cpp.o
/Library/Developer/CommandLineTools/usr/bin/c++ -DDUCKDB_BUILD_LIBRARY -DEXT_VERSION_PARQUET=\"9cba6a2a03\" -I/Users/builder/external/duckdb/src/include -I/Users/builder/external/duckdb/third_party/fsst -I/Users/builder/external/duckdb/third_party/fmt/include -I/Users/builder/external/duckdb/third_party/hyperloglog -I/Users/builder/external/duckdb/third_party/fastpforlib -I/Users/builder/external/duckdb/third_party/skiplist -I/Users/builder/external/duckdb/third_party/fast_float -I/Users/builder/external/duckdb/third_party/re2 -I/Users/builder/external/duckdb/third_party/miniz -I/Users/builder/external/duckdb/third_party/utf8proc/include -I/Users/builder/external/duckdb/third_party/concurrentqueue -I/Users/builder/external/duckdb/third_party/pcg -I/Users/builder/external/duckdb/third_party/tdigest -I/Users/builder/external/duckdb/third_party/mbedtls/include -I/Users/builder/external/duckdb/third_party/jaro_winkler -I/Users/builder/external/duckdb/third_party/yyjson/include -I/Users/builder/external/duckdb/third_party/libpg_query/include -O3 -DNDEBUG -O3 -DNDEBUG -std=c++11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk -fPIC -fvisibility=hidden -fcolor-diagnostics -w -MD -MT third_party/libpg_query/CMakeFiles/duckdb_pg_query.dir/src_backend_nodes_list.cpp.o -MF third_party/libpg_query/CMakeFiles/duckdb_pg_query.dir/src_backend_nodes_list.cpp.o.d -o third_party/libpg_query/CMakeFiles/duckdb_pg_query.dir/src_backend_nodes_list.cpp.o -c /Users/builder/external/duckdb/third_party/libpg_query/src_backend_nodes_list.cpp
In file included from /Users/builder/external/duckdb/third_party/libpg_query/src_backend_nodes_list.cpp:35:
/Users/builder/external/duckdb/third_party/libpg_query/include/pg_functions.hpp:4:10: fatal error: 'string' file not found
4 | #include <string>

Lösung: Nutzer berichten, dass eine Neuinstallation von Xcode das Problem behoben hat. Siehe die zugehörigen Diskussionen in den DuckDB-GitHub-Issues und auf Stack Overflow.

Warning Eine Neuinstallation Ihrer Xcode-Suite kann andere Anwendungen auf Ihrem System beeinträchtigen. Gehen Sie vorsichtig vor.

Terminal window
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install

Debug-Build gibt malloc-Warnung aus

Problem: Der debug-Build unter macOS gibt eine malloc-Warnung aus, z. B.:

duckdb(83082,0x205b30240) malloc: nano zone abandoned due to inability to reserve vm space.

Lösung: Um das zu verhindern, setzen Sie das Flag MallocNanoZone auf 0:

Terminal window
MallocNanoZone=0 make debug

Um diese Änderung für künftige Terminalsitzungen festzulegen, können Sie Folgendes in Ihre Datei ~/.zshrc eintragen:

Terminal window
export MallocNanoZone=0