Чтобы создать Qt5 для Raspberry Pi, необходимо выполнить несколько шагов:
Получите исходники Qt5 с git. Чтобы проверить Qt5:
git clone http://code.qt.io/cgit/qt/qt5.git< /а>
or
git clone http://code.qt.io/qt/qt5.git
Репозиторий может время от времени меняться. Проект qt все еще развивается.
Приведенная выше команда выполняется на хосте Linux. Чтобы получить ветку dev cd для qt5 и:
git checkout разработчик
с последующим
./initRepository
Это займет довольно много времени. За это время можно смонтировать корневую папку Raspberry Pi. Можно использовать кард-ридер и установить SD-карту. Гораздо лучшим решением является использование nfs, samba, sshfs для монтирования жизни Raspberry Pi. Таким образом, мелкие ошибки, например. отсутствующие пакеты разработки легко исправляются «на лету».
Я использую sshfs:
sshfs pi@raspberrypi://дом/я/рашпиль
Если это монтирование прошло успешно, корневая файловая система Raspberry Pi будет доступна в /home/me/rasp.
Как только Qt5 извлечен, необходимо внести следующие изменения: В qt5/qtbase/mkspecs необходимо отредактировать (или скопировать и отредактировать) файл linux-arm-gnueabi-g++.
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = <path to>/arm-linux-gnueabihf-gcc
QMAKE_CXX = <path to>/arm-linux-gnueabihf-g++
QMAKE_LINK = <path to>/arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = <path to>/arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = <path to>/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = <path to>/arm-linux-gnueabihf-objcopy
QMAKE_NM = <path to>/arm-linux-gnueabihf-nm -P
QMAKE_STRIP = <path to>/arm-linux-gnueabihf-strip
QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/opt/vc/include/EGL/
QMAKE_INCDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/include/GLES2/
QMAKE_INCDIR_OPENVG = $$[QT_SYSROOT]/opt/vc/include/VG/
QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/opt/vc/lib/
QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib/
QMAKE_LIBDIR_OPENVG = $$[QT_SYSROOT]/opt/vc/lib/
QMAKE_LIBS_EGL = -lEGL -lGLESv2
QMAKE_LIBS_OPENVG = -lOpenVG -lEGL -lGLESv2
QMAKE_LIBS_OPENGL_ES2 = -lEGL -lGLESv2
LIBS += -L$$[QT_SYSROOT]/opt/vc/lib -lvcos -lbcm_host -lvchiq_arm
LIBS += -lEGL -lGLESv2
INCLUDEPATH += $$[QT_SYSROOT]/opt/vc/include
INCLUDEPATH += $$[QT_SYSROOT]/opt/vc/include/interface/vcos
INCLUDEPATH += $$[QT_SYSROOT]/opt/vc/include/interface/vcos/pthreads
INCLUDEPATH += $$[QT_SYSROOT]/opt/vc/include/interface/vmcs_host/linux
‹путь к› должен быть заменен кросс-компилятором, который был создан в соответствии с: Как создать современную цепочку инструментов кросс-компиляции для Raspberry Pi 1?
Следующим шагом является настройка Qt5:
./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=<path to>/arm-linux-gnueabihf- -xplatform linux-arm-gnueabi-g++ -sysroot /home/me/rasp -opensource -confirm-license -optimized-qmake -release -make libs -prefix /usr/local/qt5pi -v -libinput -linuxfb -directfb -xcb -fontconfig -ts
lib -evdev -iconv -xinput2 -xkbcommon-evdev -eglfs -icu -qt-pcre -lpthread -system-sqlite -no-sql-sqlite2 -gstreamer 1.0 -reduce-exports
Особого внимания требуют следующие параметры:
-xplatform linux-arm-gnueabi-g++ Это mkspec. Измените имя соответствующим образом, если linux-arm-gnueabi-g++ не редактировался, а был создан новый mkspec.
-device-option CROSS_COMPILE=‹путь к›/arm-linux-gnueabihf- Не уверен, нужно ли это. Нашел в некоторых учебниках. Без этой опции все работало нормально. Настройте ‹путь к› для кросс-компилятора так же, как в файле mkspec.
-sysroot /home/me/rasp Очень важно. Точка монтирования, в которой монтируется Raspberry Pi.
-prefix /usr/local/qt5pi Где Qt5 должен быть установлен на RPi
Теперь осталось сделать обычное: make/make install. Команда собирает Qt5 и устанавливает его в /usr/qt5pi на Raspberry Pi. Убедитесь, что для этого расположения существуют надлежащие разрешения на запись.
Еще кое-что:
qtwayland/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.h
содержал ошибку, когда я компилировал свой qt5. Быстрое исправление - отредактировать этот файл:
#include <QtWaylandClient/private/qwaylandclientbufferintegration_p.h>
#include <wayland-client.h> <--- add this below the #include above.
И последнее: этот qt5 НЕ подходит для использования внутри самого Raspberry Pi. При создании программ RPi должен быть смонтирован, а компиляция должна выполняться на том же хосте с тем же кросс-компилятором, на котором был скомпилирован Qt5.
И последнее: RPi не поддерживает xcb. Таким образом, переадресация X11 невозможна.
EDIT: мне сказали, что это неправда. Нет, это не так. Однако, что правда, RPi не поддерживает xcb/X11 для программ, использующих OpenGL. Так что никаких программ qtquick 2: http://lists.qt-project.org/pipermail/qtonpi/2012-October/001087.html
На данный момент с этим ничего не поделаешь, графический драйвер просто не поддерживает это. Поддержка Wayland ограничена. Лучшей платформой для использования является eglfs.
person
Greenflow
schedule
11.05.2015