Spec-Zone.ru › Qt 5.15

Настройка встраиваемого устройства Linux

Компиляция Qt для данного устройства требует инструментальной цепочки и sysroot. Кроме того, для некоторых устройств требуется адаптационный код, специфичный для поставщика, для поддержки EGL и OpenGL ES 2.0. Это не актуально для платформ без ускорения, таких как те, которые используют плагин LinuxFB, предназначенный только для рендеринга на программном уровне.

В каталоге qtbase/mkspecs/devices содержатся конфигурационные и графические адаптационные файлы для ряда устройств. Например, linux-rasp-pi2-g++ mkspec содержит параметры сборки, такие как оптимальные флаги компилятора и линковщика для устройства Raspberry Pi 2. Mkspec также содержит информацию об имплементации хуков eglfs (код адаптации, специфичный для поставщика), или ссылку на соответствующий плагин интеграции устройства eglfs. Устройство выбирается с помощью параметра -device инструмента configure. Имя, следующее за этим аргументом, должно, по крайней мере частично, совпадать с одним из подкаталогов в каталоге devices.

Ниже приведен пример конфигурации для Raspberry Pi 2. Для большинства встраиваемых платформ Linux команда configure выглядит аналогично:

./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.14/configure-linux-device.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API