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