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