Запуск Qt-приложений
Собрать Qt-приложение можно как в IDE Qt Creator, так и без неё. Будут продемонстрированы оба способа сборки.
Запуск приложений возможен несколькими способами:
- СКИФ
- 1892ВМ14Я
- С использованием оконной системы Wayland.
- Через Framebuffer.
- С использованием оконной системы (например X11).
- Через OpenGL.
- Через Framebuffer.
- СКИФ
- 1892ВМ14Я
В да нном руководстве описан только способ запуcка через Wayland.
В данном руководстве описан только способ запуcка через OpenGL - EGLFS.
Сборка приложения выполняется на хосте. Для этого нужен кросс-компилятор и образ для запуска на модуле.
Сборка кросс-компилятора и образа прошивки SD
Подготовка
- Установить docker (см. мануалы на Вашу ОС).
- Добавить пользователя ОС в группу docker (
usermod -a -G docker $USER
). - Требуется доступ в Интернет (необходимо проверить настройки сети и/или корпоративных прокси).
- Свободного места на диске должно быть более 30ГБ.
- СКИФ
- 1892ВМ14Я
В этом разделе мы будем собирать кросс-компилятор arm-mcom03. Он нужен для сборки приложений на хосте под тагрет-систему.
В этом разделе мы будем собирать кросс-компилятор arm-mcom02. Он нужен для сборки приложений
на хосте под тагрет-систему. Qt уже включен
в defconfig mcom_defconfig
.
Конфигурация Buildroot
- СКИФ
- 1892ВМ14Я
Потребуется архив с Buildroot (последнего релиза):
wget https://dist.elvees.com/mcom03/buildroot/<vers>/mcom03-defconfig-src.tar.gz && \
tar xzpf mcom03-defconfig-src.tar.gz && \
cd mcom03-defconfig-src
Необходимо установить и настроить docker. Корректная сборка возможна только в docker-контейнере. Необходимо ознакомиться с Руководством.
В версии 2024.06 добавлен фрагмент qt.fragment
, включающий конфигурацию, описанную в этом
руководстве.
export ENABLE_NETWORK=1
./docker-build.sh make mcom03_defconfig FRAGMENTS=qt
./docker-build.sh 'make sdk && make'
Если применить указанный фрагмент, то можно переходить к пункту Разработка Qt-приложений или Запуск на модуле. Дальнейшая конфигурация опциональна и для базового использования не требуется.
Ручная конфигурация описана ниже.
Применить файл конфигурации:
./docker-build.sh make mcom03_defconfig
Не рекомендуется запускать сборку от имени root!
Потребуется архив с buildroot nightly:
wget https://dist.elvees.com/mcom02/buildroot/nightly/latest/\
mcom02-buildroot-v3.1.4-111-gedf1e68-2022-03-10.tar.bz2 && \
tar xf mcom02-buildroot*.tar.bz2 && \
cd mcom02-buildroot*/
Данное руководство не описывает процесс подготовки ПК к запуску Buildroot. Необходимо ознакомиться с Руководством_программиста. И продолжить после того, как все подготовительные этапы пройдены.
Применить стандартый файл конфигурации для MCom02:
make mcom_defconfig
Добавить QWidgets
widgets по умолчанию не включены в defconfig:
make menuconfig
Там же можно включить и другие необходимые компоненты
Добавить python-пакет (опционально)
- СКИФ
- 1892ВМ14Я
Дополнительно включить Qt Wayland (menuconfig):
- Target packages → Graphic libraries and applications → Qt5 → qt5wayland
- Target packages → Graphic libraries and applications → Qt5 → Oqt5base → gui module → OpenGL support → opengl module
Добавить шрифты DejaVu
Включить Event-ы в ядре Linux
Event-ы требуются, если в приложении нужно получать события устройств ввода, например, клавиатуру, мышь, тачпад и т.д.
make linux-menuconfig
Сборка
./docker-build.sh 'make sdk && make'
make sdk
выполняет сборку переносимого тулчейна c ARM-компилятором для целевой платы.
Дальнейшая работа будет демонстрироваться с этим тулчейном.
Это полезно, если сборка Buildroot выполняется на одном ПК, а разработка Qt-приложения – на другом.
Если нужно что-нибудь включить в сборку - можно пересобрать только указанный
пакет: make <package>-rebuild
:
./docker-build.sh 'make qt5base-rebuild && \
make python-rebuild && \
make dejavu && \
make sdk && \
make'
- СКИФ
- 1892ВМ14Я
При добавлении нового элемента Qt нужно пересобрать SDK и образ
rootfs.tar.gz (далее - rootfs
). Новый rootfs
нужно загрузить на модуль.
При добавлении нового элемента Qt нужно пересобрать SDK и образ
mcom02-buildroot-sdcard.img (далее - sdcard.img
). Новый
sdcard.img
нужно загрузить на модуль.
Далее в руководстве будет использовано обозначение ARCH
.
- Для 1892ВМ14Я это
arm
. - Для СКИФ это
aarch64
.
Для совместимости с командами из этого руководства можно выполнить команду:
export ARCH=xxx # где xxx - выбранная архитектура.
После успешной сборки в директории buildroot/output/images/
создастся
архив ARCH-buildroot-linux-*_sdk-buildroot.tar.gz
.
Разработка Qt-приложений
Подготовка ПК для разработки приложений с GUI Qt:
- Создать папку
~/cross-compile
- Скопировать в нее архив с тулчейном и распаковать.
mkdir ~/cross-compile && cd ~/cross-compile
cp <path_to_buildroot_images>/$ARCH-buildroot-linux-*_sdk-buildroot.tar.gz .
tar xzpf $ARCH-buildroot*.tar.gz
Пути в файлах тулчейна остались относительно директории на ПК, где
выполнялась сборка. Выполнить relocate
:
cd ~/cross-compile/$ARCH-buildroot-linux-*_sdk-buildroot
./relocate-sdk.sh
Теперь пути установлены верные.
Основные элементы, которые нам понадобятся для настройки Qt creator:
- SysRoot
-
~/cross-compile/$ARCH-buildroot-linux-*_sdk-buildroot/$ARCH-buildroot-linux-*/sysroot
- GCC
-
~/cross-compile/$ARCH-buildroot-linux-*_sdk-buildroot/bin/$ARCH-buildroot-linux-*-gcc
- G++
-
~/cross-compile/$ARCH-buildroot-linux-*_sdk-buildroot/bin/$ARCH-buildroot-linux-*-g++
- qmake
-
~/cross-compile/$ARCH-buildroot-linux-*_sdk-buildroot/bin/qmake
Вместо *
— gnu
для СКИФ и gnueabihf
для 1892ВМ14Я.
Настройка Qt Creator
Установка
Скачать Qt Creator open-source можно в магазине приложений ОС (например "GNOME Центр приложений"), в пакетном менеджере ОС, с зеркала, либо с официального сайта с VPN.
Пример команды для загрузки в Linux:
wget http://www.mirrorservice.org/sites/download.qt-project.org/\
official_releases/qt/5.9/5.9.9/qt-opensource-linux-x64-5.9.9.run
Для установки без регистрации:
- Выключить интернет.
- Запустить
./qt-opensource-linux-x64-5.9.9.run
Версия 5.9 стала последней, где возможна оффлайн-установка.
Или с помощью пакетного менеджера (пример для Ubuntu/Debian):
sudo apt install qtcreator