Prerequisites
Install Xcode and Homebrew. Then, install the required packages with:
brew install git cmake ninja Building DuckDB
Clone and build DuckDB as follows.
git clone https://github.com/duckdb/duckdb cd duckdb GEN=ninja make Once the build finishes successfully, you can find the duckdb binary in the build directory:
build/release/duckdb For different build configurations (debug, relassert, etc.), please consult the Build Configurations page.
Troubleshooting
Build Failure: 'string' file not found
Problem: The build fails on macOS with following error:
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> Solution: Users report that reinstalling Xcode fixed their problem. See related discussions on the DuckDB GitHub issues and on Stack Overflow.
Warning Attempting to reinstall your Xcode suite may impact other applications on your system. Proceed with caution.
sudo rm -rf /Library/Developer/CommandLineTools xcode-select --install Debug Build Prints malloc Warning
Problem: The debug build on macOS prints a malloc warning, e.g.:
duckdb(83082,0x205b30240) malloc: nano zone abandoned due to inability to reserve vm space. Solution: To prevent this, set the MallocNanoZone flag to 0:
MallocNanoZone=0 make debug To apply this change for your future terminal sessions, you can add the following to your ~/.zshrc file:
export MallocNanoZone=0