Spec-Zone.ru › DuckDB

Инструкции по сборке

Предварительные требования

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API