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