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

Сборка на 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.