За да създадете Qt5 за Raspberry Pi, са необходими няколко стъпки:
Вземете източниците на Qt5 от git. За да платите Qt5:
git клонинг http://code.qt.io/cgit/qt/qt5.git
or
git клонинг http://code.qt.io/qt/qt5.git
Хранилището може да се променя от време на време. Проектът qt все още се развива.
Горната команда е изпълнена на хоста на Linux. За да получите cd на клона на разработчиците до qt5 и:
git checkout dev
следван от
./initRepository
Това ще отнеме доста време. През това време основната папка на Raspberry Pi може да бъде монтирана. Има възможност за използване на четец на карти и монтиране на SD картата. Много по-добро решение е да използвате или nfs, samba, sshfs за монтиране на доживотен Raspberry Pi. По този начин незначителни грешки, напр. липсващи пакети за разработка, лесно се коригират „в движение“.
Използвам sshfs:
sshfs pi@raspberrypi:/ /home/me/rasp
Ако това монтиране е успешно, основната файлова система на 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
‹path to› трябва да бъде заменен с кръстосания компилатор, който е създаден според: Как мога да създам модерна верига от инструменти за кръстосано компилиране за 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=‹path to›/arm-linux-gnueabihf- Не съм сигурен дали това е необходимо. Намерих го в някои уроци. Всичко работеше добре и без тази опция. Коригирайте ‹path to› към кръстосания компилатор точно както в mkspec.
-sysroot /home/me/rasp Много важно. Точката на монтиране, където е монтиран Raspberry Pi.
-префикс /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 не е възможно.
РЕДАКТИРАНЕ: Казаха ми, че това не е вярно. Не, не е. Вярно е обаче, че 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