Настройка встраиваемого устройства Linux
Компиляция Qt для данного устройства требует инструментальной цепочки и sysroot. Кроме того, некоторые устройства требуют адаптационного кода, специфичного для поставщика, для поддержки EGL и OpenGL ES 2.0. Это не относится к платформам без ускорения, таким как те, которые используют плагин LinuxFB, предназначенный только для программного рендеринга.
В каталоге qtbase/mkspecs/devices содержатся конфигурационные и адаптационные графические файлы для ряда устройств. Например, mkspec linux-rasp-pi2-g++ содержит настройки сборки, такие как оптимальные флаги компилятора и линковщика для устройства Raspberry Pi 2. Mkspec также содержит информацию об реализации хуков eglfs (адаптационный код, специфичный для поставщика) или ссылку на подходящий интеграционный плагин устройства eglfs. Устройство выбирается с помощью параметра -device инструмента конфигурации. Имя, которое следует за этим аргументом, должно хотя бы частично совпадать с одним из подкаталогов в каталоге devices.
Ниже приведен пример конфигурации для Raspberry Pi 2. Для большинства встраиваемых платформ Linux команда конфигурации выглядит аналогично:
./configure -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=$TOOLCHAIN/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot $ROOTFS -prefix /usr/local/qt5
Наиболее важными параметрами являются -device и -sysroot. Указав -sysroot, файлы заголовков и библиотеки, используемые в тестах обнаружения функций configure, а также сам Qt, берутся из указанного местоположения, а не из стандартных местоположений хост-компьютера. Следовательно, установка пакетов разработки на хост-машину не имеет значения. Например, для получения поддержки libinput, недостаточно и не нужно, чтобы заголовки и библиотеки разработки libinput были установлены на хост-среде. Вместо этого заголовки и библиотеки для целевой архитектуры, например, ARM, должны присутствовать в sysroot.
pkg-config поддерживается также при выполнении кросс-компиляции. configure автоматически устанавливает PKG_CONFIG_LIBDIR для того, чтобы pkg-config сообщал настройки компилятора и линковщика, основанные на sysroot, а не на хост-машине. Обычно это работает без дополнительных настроек. Однако переменные окружения, такие как PKG_CONFIG_PATH, должны быть удалены для хост-машины перед запуском configure. В противном случае сборка Qt может попытаться использовать неподходящие заголовки и библиотеки с хост-системы.
Указание -sysroot приводит к автоматическому установлению аргумента --sysroot при вызове компилятора. В некоторых случаях это нежелательно и может быть отключено путём передачи -no-gcc-sysroot в configure.
-prefix, -extprefix, и -hostprefix контролируют предполагаемую целевую директорию сборки Qt. В приведённом выше примере ARM-версия Qt должна быть размещена в /usr/local/qt5 на целевом устройстве. Обратите внимание, что запуск make install ничего не развёртывает на устройстве. Вместо этого этап install нацелен на директорию, указанную параметром extprefix, которая по умолчанию равна sysroot + prefix, и поэтому является необязательной. Однако во многих случаях "загрязнение" sysroot нежелательно, поэтому указание -extprefix становится важным. Наконец, -hostprefix позволяет разделять хост-инструменты, такие как qmake, rcc, uic, от библиотек для целевого устройства. При использовании такие инструменты будут установлены в указанную директорию вместо extprefix.
Для получения дополнительной информации см. Параметры конфигурации Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/configure-linux-device.html