Помогите собрать Qt под Raspberry Pi 4
Хочу собрать Qt на Raspberry Pi 4 (4GB). Делаю по руководству Building Qt 5.12 LTS for Raspberry Pi on Raspbian. Пробовал и для 5.12.7/5.12.8. Результат одинаковый. Вот что я делал:
wget http://download.qt.io/official_releases/qt/5.12/5.12.8/single/qt-everywhere-src-5.12.8.tar.xz
md5sum qt-everywhere-src-5.12.8.tar.xz
tar xf qt-everywhere-src-5.12.8.tar.xz
git clone https://github.com/oniongarlic/qt-raspberrypi-configuration.git
# в скачанном выше проекте изменил версию 5.12.7 -> 5.12.8
cd qt-raspberrypi-configuration && make install DESTDIR=../qt-everywhere-src-5.12.8
sudo apt-get update
sudo apt-get install build-essential libfontconfig1-dev libdbus-1-dev libfreetype6-dev libicu-dev libinput-dev libxkbcommon-dev libsqlite3-dev libssl-dev libpng-dev libjpeg-dev libglib2.0-dev libraspberrypi-dev
sudo apt-get install libpq-dev libmariadbclient-dev bluez libbluetooth-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad libgstreamer-plugins-bad1.0-dev gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-alsa libasound2-dev pulseaudio libpulse-dev libcups2-dev libwayland-dev libx11-dev libxcb1-dev libxkbcommon-x11-dev libx11-xcb-dev libxext-dev libatspi-dev libgles2-mesa-dev libgbm-dev
mkdir ../build
cd ../build
PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig \
../qt-everywhere-src-5.12.8/configure -platform linux-rpi4-v3d-g++ \
-v \
-opengl es2 -eglfs \
-no-gtk \
-opensource -confirm-license -release \
-reduce-exports \
-force-pkg-config \
-nomake examples -no-compile-examples \
-skip qtwayland \
-skip qtwebengine \
-no-feature-geoservices_mapboxgl \
-qt-pcre \
-no-pch \
-ssl \
-evdev \
-system-freetype \
-fontconfig \
-glib \
-prefix /opt/Qt5.12 \
-qpa eglfs
Получаю отчет, где EGLFS EGLDevice NO:
Done running configuration tests.
Configure summary:
Build type: linux-rpi4-v3d-g++ (arm, CPU features: neon)
Compiler: gcc 8.3.0
Configuration: use_gold_linker enable_new_dtags largefile neon shared rpath release c++11 c++14 c++1z concurrent dbus reduce_exports stl
Build options:
Mode ................................... release
Optimize release build for size ........ no
Building shared libraries .............. yes
Using C standard ....................... C11
Using C++ standard ..................... C++1z
Using ccache ........................... no
Using gold linker ...................... yes
Using new DTAGS ........................ yes
Using precompiled headers .............. no
Using LTCG ............................. no
Target compiler supports:
NEON ................................. yes
Build parts ............................ libs tools
Qt modules and options:
Qt Concurrent .......................... yes
Qt D-Bus ............................... yes
Qt D-Bus directly linked to libdbus .... yes
Qt Gui ................................. yes
Qt Network ............................. yes
Qt Sql ................................. yes
Qt Testlib ............................. yes
Qt Widgets ............................. yes
Qt Xml ................................. yes
Support enabled for:
Using pkg-config ....................... yes
udev ................................... yes
Using system zlib ...................... yes
Qt Core:
DoubleConversion ....................... yes
Using system DoubleConversion ........ no
GLib ................................... yes
iconv .................................. no
ICU .................................... yes
Tracing backend ........................ <none>
Logging backends:
journald ............................. no
syslog ............................... no
slog2 ................................ no
Using system PCRE2 ..................... no
Qt Network:
getifaddrs() ........................... yes
IPv6 ifname ............................ yes
libproxy ............................... no
Linux AF_NETLINK ....................... yes
OpenSSL ................................ yes
Qt directly linked to OpenSSL ........ no
OpenSSL 1.1 ............................ yes
DTLS ................................... yes
SCTP ................................... no
Use system proxies ..................... yes
Qt Gui:
Accessibility .......................... yes
FreeType ............................... yes
Using system FreeType ................ yes
HarfBuzz ............................... yes
Using system HarfBuzz ................ no
Fontconfig ............................. yes
Image formats:
GIF .................................. yes
ICO .................................. yes
JPEG ................................. yes
Using system libjpeg ............... yes
PNG .................................. yes
Using system libpng ................ yes
EGL .................................... yes
OpenVG ................................. no
OpenGL:
Desktop OpenGL ....................... no
OpenGL ES 2.0 ........................ yes
OpenGL ES 3.0 ........................ yes
OpenGL ES 3.1 ........................ yes
OpenGL ES 3.2 ........................ yes
Vulkan ................................. no
Session Management ..................... yes
Features used by QPA backends:
evdev .................................. yes
libinput ............................... yes
INTEGRITY HID .......................... no
mtdev .................................. yes
tslib .................................. no
xkbcommon .............................. yes
X11 specific:
XLib ................................. yes
XCB Xlib ............................. yes
EGL on X11 ........................... yes
QPA backends:
DirectFB ............................... no
EGLFS .................................. yes
EGLFS details:
EGLFS OpenWFD ........................ no
EGLFS i.Mx6 .......................... no
EGLFS i.Mx6 Wayland .................. no
EGLFS RCAR ........................... no
EGLFS EGLDevice ...................... no
EGLFS GBM ............................ no
EGLFS VSP2 ........................... no
EGLFS Mali ........................... no
EGLFS Raspberry Pi ................... no
EGLFS X11 ............................ yes
LinuxFB ................................ yes
VNC .................................... yes
Mir client ............................. no
XCB:
Using system-provided XCB libraries .. no
XCB XKB .............................. yes
XCB XInput ........................... yes
Native painting (experimental) ....... no
GL integrations:
GLX Plugin ......................... no
EGL-X11 Plugin ..................... yes
Qt Sql:
SQL item models ........................ yes
Qt Widgets:
GTK+ ................................... no
Styles ................................. Fusion Windows
Qt PrintSupport:
CUPS ................................... yes
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................. no
OCI (Oracle) ........................... no
ODBC ................................... no
PostgreSQL ............................. yes
SQLite2 ................................ no
SQLite ................................. yes
Using system provided SQLite ......... no
TDS (Sybase) ........................... no
Qt Testlib:
Tester for item models ................. yes
Qt SerialBus:
Socket CAN ............................. yes
Socket CAN FD .......................... yes
Further Image Formats:
JasPer ................................. no
MNG .................................... no
TIFF ................................... yes
Using system libtiff ................. yes
WEBP ................................... yes
Using system libwebp ................. no
Qt QML:
QML network support .................... yes
QML debugging and profiling support .... yes
QML sequence object .................... yes
QML list model ......................... yes
QML XML http request ................... yes
QML Locale ............................. yes
QML delegate model ..................... yes
Qt Quick:
Direct3D 12 ............................ no
AnimatedImage item ..................... yes
Canvas item ............................ yes
Support for Qt Quick Designer .......... yes
Flipable item .......................... yes
GridView item .......................... yes
ListView item .......................... yes
TableView item ......................... yes
Path support ........................... yes
PathView item .......................... yes
Positioner items ....................... yes
Repeater item .......................... yes
ShaderEffect item ...................... yes
Sprite item ............................ yes
Qt Scxml:
ECMAScript data model for QtScxml ...... yes
Qt Gamepad:
SDL2 ................................... no
Qt 3D:
Assimp ................................. yes
System Assimp .......................... no
Output Qt3D Job traces ................. no
Output Qt3D GL traces .................. no
Use SSE2 instructions .................. no
Use AVX2 instructions .................. no
Aspects:
Render aspect ........................ yes
Input aspect ......................... yes
Logic aspect ......................... yes
Animation aspect ..................... yes
Extras aspect ........................ yes
Qt 3D Renderers:
OpenGL Renderer ........................ yes
Qt 3D GeometryLoaders:
Autodesk FBX ........................... no
Qt Bluetooth:
BlueZ .................................. yes
BlueZ Low Energy ....................... yes
Linux Crypto API ....................... yes
WinRT Bluetooth API (desktop & UWP) .... no
Qt Sensors:
sensorfw ............................... no
Qt Quick Controls 2:
Styles ................................. Default Fusion Imagine Material Universal
Qt Quick Templates 2:
Hover support .......................... yes
Multi-touch support .................... yes
Qt Positioning:
Gypsy GPS Daemon ....................... no
WinRT Geolocation API .................. no
Qt Location:
Qt.labs.location experimental QML plugin . yes
Geoservice plugins:
OpenStreetMap ........................ yes
HERE ................................. yes
Esri ................................. yes
Mapbox ............................... yes
MapboxGL ............................. no
Itemsoverlay ......................... yes
QtXmlPatterns:
XML schema support ..................... yes
Qt Multimedia:
ALSA ................................... yes
GStreamer 1.0 .......................... yes
GStreamer 0.10 ......................... no
Video for Linux ........................ yes
OpenAL ................................. no
PulseAudio ............................. yes
Resource Policy (libresourceqt5) ....... no
Windows Audio Services ................. no
DirectShow ............................. no
Windows Media Foundation ............... no
Qt Tools:
QDoc ................................... no
Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing.
WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation.
Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation.
On Linux systems, you may be able to install libclang by installing the libclang-dev or libclang-devel package, depending on your distribution.
On macOS, you can use Homebrew's llvm package.
On Windows, you must set LLVM_INSTALL_DIR to the installation path.
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/opt/Qt5.12'.
Prior to reconfiguration, make sure you remove any leftovers from
the previous build.
И при попытке сборки получаю ошибку:
.obj/qsgbatchrenderer.o:qsgbatchrenderer.cpp:function QSGBatchRenderer::Renderer::map(QSGBatchRenderer::Buffer*, int, bool): error: undefined reference to 'QSGDefaultRenderContext::separateIndexBuffer() const'
.obj/qsgbatchrenderer.o:qsgbatchrenderer.cpp:function QSGBatchRenderer::Renderer::uploadBatch(QSGBatchRenderer::Batch*): error: undefined reference to 'QSGDefaultRenderContext::separateIndexBuffer() const'
.obj/qsgbatchrenderer.o:qsgbatchrenderer.cpp:function QSGBatchRenderer::Renderer::visualizeBatch(QSGBatchRenderer::Batch*): error: undefined reference to 'QSGDefaultRenderContext::separateIndexBuffer() const'
.obj/qsgbatchrenderer.o:qsgbatchrenderer.cpp:function QSGBatchRenderer::Renderer::renderMergedBatch(QSGBatchRenderer::Batch const*): error: undefined reference to 'QSGDefaultRenderContext::separateIndexBuffer() const'
.obj/qsgtexture.o:qsgtexture.cpp:function QSGPlainTexture::bind(): error: undefined reference to 'QSGDefaultRenderContext::from(QOpenGLContext*)'
.obj/qsgrenderloop.o:qsgrenderloop.cpp:function QSGRenderLoop::instance(): error: undefined reference to 'QSGWindowsRenderLoop::QSGWindowsRenderLoop()'
.obj/qsgdefaultglyphnode_p.o:qsgdefaultglyphnode_p.cpp:function QSGTextMaskMaterial::updateCache(QFontEngine::GlyphFormat): error: undefined reference to 'QSGDefaultRenderContext::from(QOpenGLContext*)'
.obj/qsgdefaultcontext.o:qsgdefaultcontext.cpp:function QSGDefaultContext::createRenderContext(): error: undefined reference to 'QSGDefaultRenderContext::QSGDefaultRenderContext(QSGContext*)'
.obj/qsgdefaultcontext.o:qsgdefaultcontext.cpp:function QSGDefaultContext::createLayer(QSGRenderContext*): error: undefined reference to 'QSGDefaultLayer::QSGDefaultLayer(QSGRenderContext*)'
.obj/qsgthreadedrenderloop.o:qsgthreadedrenderloop.cpp:function QSGThreadedRenderLoop::windowDestroyed(QQuickWindow*): error: undefined reference to 'vtable for QSGRenderThread'
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function
.obj/qsgthreadedrenderloop.o:qsgthreadedrenderloop.cpp:function QSGThreadedRenderLoop::handleExposure(QQuickWindow*): error: undefined reference to 'vtable for QSGRenderThread'
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function
.obj/qsgthreadedrenderloop.o:qsgthreadedrenderloop.cpp:function QSGRenderThread::~QSGRenderThread(): error: undefined reference to 'vtable for QSGRenderThread'
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function
.obj/qsgthreadedrenderloop.o:qsgthreadedrenderloop.cpp:function QSGRenderThread::~QSGRenderThread(): error: undefined reference to 'vtable for QSGRenderThread'
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function
.obj/qsgsoftwareinternalimagenode.o:qsgsoftwareinternalimagenode.cpp:function QSGSoftwareInternalImageNode::setTexture(QSGTexture*): error: undefined reference to 'QSGSoftwareLayer::staticMetaObject'
.obj/qsgsoftwareinternalimagenode.o:qsgsoftwareinternalimagenode.cpp:function QSGSoftwareInternalImageNode::pixmap() const: error: undefined reference to 'QSGSoftwarePixmapTexture::staticMetaObject'
.obj/qsgsoftwareinternalimagenode.o:qsgsoftwareinternalimagenode.cpp:function QSGSoftwareInternalImageNode::pixmap() const: error: undefined reference to 'QSGSoftwareLayer::staticMetaObject'
.obj/qsgsoftwarepublicnodes.o:qsgsoftwarepublicnodes.cpp:function QSGSoftwareNinePatchNode::setTexture(QSGTexture*): error: undefined reference to 'QSGSoftwarePixmapTexture::staticMetaObject'
.obj/qsgsoftwarepublicnodes.o:qsgsoftwarepublicnodes.cpp:function QSGSoftwareImageNode::updateCachedMirroredPixmap(): error: undefined reference to 'QSGSoftwarePixmapTexture::staticMetaObject'
.obj/qsgsoftwarepublicnodes.o:qsgsoftwarepublicnodes.cpp:function QSGSoftwareImageNode::updateCachedMirroredPixmap(): error: undefined reference to 'QSGSoftwareLayer::staticMetaObject'
.obj/qsgsoftwarepublicnodes.o:qsgsoftwarepublicnodes.cpp:function QSGSoftwareImageNode::paint(QPainter*): error: undefined reference to 'QSGSoftwarePixmapTexture::staticMetaObject'
.obj/qsgsoftwarepublicnodes.o:qsgsoftwarepublicnodes.cpp:function QSGSoftwareImageNode::paint(QPainter*): error: undefined reference to 'QSGSoftwareLayer::staticMetaObject'
.obj/qsgsoftwarepainternode.o:qsgsoftwarepainternode.cpp:function QSGSoftwarePainterNode::update(): error: undefined reference to 'QSGSoftwarePixmapTexture::QSGSoftwarePixmapTexture(QPixmap const&)'
.obj/qsgsoftwareadaptation.o:qsgsoftwareadaptation.cpp:function QSGSoftwareAdaptation::create(QString const&) const: error: undefined reference to 'QSGSoftwareContext::QSGSoftwareContext(QObject*)'
.obj/qsgsoftwareadaptation.o:qsgsoftwareadaptation.cpp:function QSGSoftwareAdaptation::createWindowManager(): error: undefined reference to 'QSGSoftwareRenderLoop::QSGSoftwareRenderLoop()'
.obj/qsgsoftwarethreadedrenderloop.o:qsgsoftwarethreadedrenderloop.cpp:function QSGSoftwareThreadedRenderLoop::createRenderContext(QSGContext*) const: error: undefined reference to 'QSGSoftwareRenderContext::QSGSoftwareRenderContext(QSGContext*)'
.obj/qsgsoftwarethreadedrenderloop.o:qsgsoftwarethreadedrenderloop.cpp:function QSGSoftwareThreadedRenderLoop::~QSGSoftwareThreadedRenderLoop(): error: undefined reference to 'QSG_RASTER_LOG_RENDERLOOP()'
.obj/qsgsoftwarethreadedrenderloop.o:qsgsoftwarethreadedrenderloop.cpp:function QSGSoftwareThreadedRenderLoop::~QSGSoftwareThreadedRenderLoop(): error: undefined reference to 'QSG_RASTER_LOG_RENDERLOOP()'
.obj/qsgsoftwarethreadedrenderloop.o:qsgsoftwarethreadedrenderloop.cpp:function QSGSoftwareThreadedRenderLoop::show(QQuickWindow*): error: undefined reference to 'QSG_RASTER_LOG_RENDERLOOP()'
.obj/qsgsoftwarethreadedrenderloop.o:qsgsoftwarethreadedrenderloop.cpp:function QSGSoftwareThreadedRenderLoop::show(QQuickWindow*): error: undefined reference to 'QSG_RASTER_LOG_RENDERLOOP()'
.obj/qsgsoftwarethreadedrenderloop.o:qsgsoftwarethreadedrenderloop.cpp:function QSGSoftwareThreadedRenderLoop::QSGSoftwareThreadedRenderLoop(): error: undefined reference to 'QSGSoftwareContext::QSGSoftwareContext(QObject*)'
.obj/qsgsoftwarethreadedrenderloop.o:qsgsoftwarethreadedrenderloop.cpp:function QSGSoftwareContext::createRenderContext(): error: undefined reference to 'QSGSoftwareRenderContext::QSGSoftwareRenderContext(QSGContext*)'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:955: ../../lib/libQt5Quick.so.5.12.8] Ошибка 1
make[3]: выход из каталога «/home/pi/qt/qt_5_12_8/build/qtdeclarative/src/quick»
make[2]: *** [Makefile:99: sub-quick-make_first-ordered] Ошибка 2
make[2]: выход из каталога «/home/pi/qt/qt_5_12_8/build/qtdeclarative/src»
make[1]: *** [Makefile:50: sub-src-make_first] Ошибка 2
make[1]: выход из каталога «/home/pi/qt/qt_5_12_8/build/qtdeclarative»
make: *** [Makefile:335: module-qtdeclarative-make_first] Ошибка 2