Перейти к основному содержимому
Перейти к основному содержимому

Сборка на Linux для s390x (zLinux)

ClickHouse имеет экспериментальную поддержку для s390x.

Сборка ClickHouse для s390x

s390x имеет две настройки сборки, связанные с OpenSSL:

  • По умолчанию OpenSSL собирается на s390x как общая библиотека. Это отличается от всех других платформ, где OpenSSL собирается как статическая библиотека.
  • Чтобы собрать OpenSSL как статическую библиотеку, передайте -DENABLE_OPENSSL_DYNAMIC=0 в CMake.

Данные инструкции предполагают, что хост-машина является x86_64 и имеет все инструменты, необходимые для сборки нативно, на основе инструкций по сборке. Также предполагается, что хост работает на Ubuntu 22.04, но приведенные инструкции должны также работать на Ubuntu 20.04.

Кроме установки инструментов, используемых для нативной сборки, необходимо установить следующие дополнительные пакеты:

Если вы хотите кросс-компилировать код на Rust, установите целевую платформу для кросс-компиляции s390x:

Сборка для s390x использует линкер mold, скачайте его с https://github.com/rui314/mold/releases/download/v2.0.0/mold-2.0.0-x86_64-linux.tar.gz и поместите в ваш $PATH.

Чтобы собрать для s390x:

Запуск

После сборки исполняемый файл можно запустить, например:

Отладка

Установите LLDB:

Чтобы отладить исполняемый файл s390x, запустите clickhouse, используя QEMU в режиме отладки:

В другом терминале запустите LLDB и присоединитесь, заменив <Clickhouse Parent Directory> и <build directory> на значения, соответствующие вашей среде.

Интеграция с Visual Studio Code

  • Расширение CodeLLDB требуется для визуальной отладки.
  • Расширение Command Variable может помочь с динамическими запусками, если используется CMake Variants.
  • Убедитесь, что вы установили бэкенд на вашу установку LLVM, например, "lldb.library": "/usr/lib/x86_64-linux-gnu/liblldb-15.so".
  • Убедитесь, что вы запускаете исполняемый файл clickhouse в режиме отладки перед запуском. (Также возможно создать preLaunchTask, который автоматизирует это)

Пример конфигураций

cmake-variants.yaml

launch.json

settings.json

Это также поместит разные сборки в разные подпапки папки build.

run-debug.sh

tasks.json

Определяет задачу для запуска собранного исполняемого файла в режиме server в папке tmp, рядом с бинарниками, с конфигурацией из под programs/server/config.xml.