Инструкции по сборке
Предварительные требования
DuckDB нуждается в CMake и компиляторе, совместимом с C++11 (например, GCC, Apple-Clang, MSVC). Кроме того, рекомендуется использовать систему сборки Ninja, которая автоматически распараллеливает процесс сборки.
Системы семейства UNIX
Пакеты macOS
Установите Xcode и Homebrew. Затем установите необходимые пакеты командой:
brew install git cmake ninja
Пакеты Linux
Установите необходимые пакеты с помощью менеджера пакетов вашей дистрибуции.
Ubuntu и Debian
sudo apt-get update && sudo apt-get install -y git g++ cmake ninja-build libssl-dev
Fedora, CentOS и Red Hat
sudo yum install -y git g++ cmake ninja-build openssl-devel
Alpine Linux
apk add g++ git make cmake ninja
Обратите внимание, что Alpine Linux использует musl libc в качестве стандартной библиотеки C. Официальных библиотек для musl libc нет, но DuckDB можно собрать вручную, следуя инструкциям на этой странице.
Клонирование репозитория
Клонируйте репозиторий DuckDB:
git clone https://github.com/duckdb/duckdb
Рекомендуется создать полную копию репозитория. Обратите внимание, что размер каталога составляет примерно 1,3 ГБ.
Сборка DuckDB
Для сборки DuckDB мы используем Makefile, который, в свою очередь, вызывает CMake. Также рекомендуется использовать Ninja в качестве генератора для CMake.
GEN=ninja make
Рекомендация Не рекомендуется напрямую вызывать CMake, так как Makefile устанавливает определённые переменные, которые необходимы для правильной сборки пакета.
После успешной сборки вы можете найти бинарный файл duckdb в каталоге build:
build/release/duckdb
Связывание расширений
Для тестирования может быть полезно собрать DuckDB со статически связанными основными расширениями. Для этого выполните команду:
CORE_EXTENSIONS='autocomplete;httpfs;icu;json;tpch' GEN=ninja make
Этот вариант также поддерживает расширения вне дерева проекта:
CORE_EXTENSIONS='autocomplete;httpfs;icu;json;tpch;delta' GEN=ninja make
Для получения более подробной информации см. страницу “Сборка расширений”.
Windows
В Windows DuckDB требует пакет Microsoft Visual C++ Redistributable как в качестве зависимости для сборки, так и для выполнения. Обратите внимание, что в отличие от процесса сборки на системах семейства UNIX, сборка на Windows напрямую использует CMake.
Visual Studio
Для сборки DuckDB на Windows рекомендуется использовать компилятор Visual Studio. Для этого следуйте инструкциям в рабочем процессе CI:
python scripts/windows_ci.py
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DENABLE_EXTENSION_AUTOLOADING=1 \
-DENABLE_EXTENSION_AUTOINSTALL=1 \
-DDUCKDB_EXTENSION_CONFIGS="${GITHUB_WORKSPACE}/.github/config/bundled_extensions.cmake" \
-DDISABLE_UNITY=1 \
-DOVERRIDE_GIT_DESCRIBE="$OVERRIDE_GIT_DESCRIBE"
cmake --build . --config Release --parallel MSYS2 и MinGW64
DuckDB на Windows также можно собрать с помощью MSYS2 и MinGW64. Обратите внимание, что эта сборка поддерживается только по соображениям совместимости и должна использоваться только в том случае, если сборка с Visual Studio невозможна на данной платформе. Для сборки DuckDB с MinGW64 установите необходимые зависимости с помощью Pacman. При появлении запроса Enter a selection (default=all), выберите стандартный вариант, нажав Enter.
pacman -Syu git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja git clone https://github.com/duckdb/duckdb cd duckdb cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DBUILD_EXTENSIONS="icu;parquet;json" cmake --build . --config Release
После успешной сборки вы можете найти бинарный файл duckdb.exe в каталоге репозитория:
./duckdb.exe
Raspberry Pi (32-битная)
На 32-битных платах Raspberry Pi необходимо добавить -latomic флаг связи. Поскольку расширения для этой платформы не распространяются, рекомендуется также включать их в процесс сборки. Например:
mkdir build
cd build
cmake .. \
-DCORE_EXTENSIONS="httpfs;json;parquet" \
-DDUCKDB_EXTRA_LINK_FLAGS="-latomic"
make -j4 Поиск и устранение неполадок
Ошибка сборки из-за недостатка памяти
Ninja распараллеливает сборку, что может привести к ошибкам недостатка памяти на системах с ограниченными ресурсами. Такие проблемы также были отмечены на Alpine Linux, особенно на машинах с ограниченными ресурсами. В таких случаях следует избегать использования Ninja, задав пустой генератор для Makefile (GEN=):
GEN= make
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/dev/building/build_instructions.html