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

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