macOS에서 빌드하기

macOS에서 빌드하기 (Building on macOS)

이 페이지에서는 macOS에서 DuckDB를 빌드하는 방법을 설명해요.

출처: 문서

본문

사전 요구사항 (Prerequisites)

Xcode와 Homebrew를 설치해요. 그런 다음 다음으로 필요한 패키지를 설치해요.

brew install git cmake ninja

DuckDB 빌드 (Building DuckDB)

다음과 같이 DuckDB를 클론하고 빌드해요.

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

빌드가 성공적으로 끝나면 build 디렉터리에서 duckdb 바이너리를 찾을 수 있어요.

build/release/duckdb

다른 빌드 구성(debug, relassert 등)에 대해서는 Build Configurations 페이지를 참고해요.

문제 해결 (Troubleshooting)

빌드 실패: 'string' file not found

문제: macOS에서 빌드가 다음 오류로 실패해요.

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>

해결책: 사용자들은 Xcode를 재설치하면 문제가 해결되었다고 보고해요. 관련 논의는 DuckDB GitHub 이슈Stack Overflow에서 확인할 수 있어요.

경고: Xcode 스위트를 재설치하면 시스템의 다른 애플리케이션에 영향을 줄 수 있어요. 주의해서 진행하세요.

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

Debug 빌드가 malloc 경고를 출력 (Debug Build Prints malloc Warning)

문제: macOS의 debug 빌드는 malloc 경고를 출력해요. 예:

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

해결책: 이를 방지하려면 MallocNanoZone 플래그를 0으로 설정해요.

MallocNanoZone=0 make debug

앞으로의 터미널 세션에 이 변경을 적용하려면 ~/.zshrc 파일에 다음을 추가해요.

export MallocNanoZone=0

더 알아보기 (Learn more)