⌘+k ctrl+k
1.2 (stable)
Search Shortcut cmd + k | ctrl + k
macOS

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