Qt 5.11 for Beaglebone Black
-
You are mixing hard and soft float architecture somehow. Is your sysroot using softfp? Then you should use the same for Qt compilation (currently you are using armhf - hard float).
Some additional info: https://stackoverflow.com/questions/9753749/arm-compilation-error-vfp-registered-used-by-executable-not-object-file
-
Sierdzio,
I modified a qmake which reside at ..qtbase/mkspec/devices/linux-beaglebone-g++/qmake.conf
as follow:# # qmake configuration for the BeagleBoard and BeagleBoard xM boards # http://beagleboard.org/ MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) include(../../common/gcc-base-unix.conf) include(../../common/g++-unix.conf) load(device_config) QT_QPA_DEFAULT_PLATFORM = eglfs # modifications to g++.conf QMAKE_CC = $${CROSS_COMPILE}gcc QMAKE_CXX = $${CROSS_COMPILE}g++ QMAKE_LINK = $${QMAKE_CXX} QMAKE_LINK_SHLIB = $${QMAKE_CXX} # modifications to linux.conf QMAKE_AR = $${CROSS_COMPILE}ar cqs QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy QMAKE_NM = $${CROSS_COMPILE}nm -P QMAKE_STRIP = $${CROSS_COMPILE}strip **#COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb** (disabled) COMPILER_FLAGS = -mfloat-abi=softfp (enable) #modifications to gcc-base.conf QMAKE_CFLAGS += $${COMPILER_FLAGS} QMAKE_CXXFLAGS += $${COMPILER_FLAGS} QMAKE_CXXFLAGS_RELEASE += -O3 QMAKE_LIBS += -lrt -lpthread -ldl # Extra stuff (OpenGL, DirectFB, ...) QMAKE_INCDIR_EGL = QMAKE_LIBDIR_EGL = QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL} QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} **#DISTRO_OPTS += hard-float** (disabled completely) # No need for any special EGL device integration. # Prioritize the default, compiled-in integration over any plugins. EGLFS_DEVICE_INTEGRATION = none include(../common/linux_arm_device_post.conf) load(qt_config)
The configuration syntax as follow:
./configure -v -opensource -confirm-license -prefix /usr/local/qt5.11 -device linux-beagleboard-g++ -device-option CROSS_COMPILE=$HOME/gcc-linaro-4.9/bin/arm-linux-gnueabi- -qt-libpng -qt-libjpeg -qpa eglfs -no-opengl -qpa tslib -no-gcc-sysroot -release -no-use-gold-linker
This time ./configuration script succeeded, I hope this could be reference to someone who need solution.
please advise who to update the QT website page for BBB.
https://wiki.qt.io/BeagleBone_Black_Beginners_Guide
Thank you, -
Sierdzio,
I modified a qmake which reside at ..qtbase/mkspec/devices/linux-beaglebone-g++/qmake.conf
as follow:# # qmake configuration for the BeagleBoard and BeagleBoard xM boards # http://beagleboard.org/ MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) include(../../common/gcc-base-unix.conf) include(../../common/g++-unix.conf) load(device_config) QT_QPA_DEFAULT_PLATFORM = eglfs # modifications to g++.conf QMAKE_CC = $${CROSS_COMPILE}gcc QMAKE_CXX = $${CROSS_COMPILE}g++ QMAKE_LINK = $${QMAKE_CXX} QMAKE_LINK_SHLIB = $${QMAKE_CXX} # modifications to linux.conf QMAKE_AR = $${CROSS_COMPILE}ar cqs QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy QMAKE_NM = $${CROSS_COMPILE}nm -P QMAKE_STRIP = $${CROSS_COMPILE}strip **#COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb** (disabled) COMPILER_FLAGS = -mfloat-abi=softfp (enable) #modifications to gcc-base.conf QMAKE_CFLAGS += $${COMPILER_FLAGS} QMAKE_CXXFLAGS += $${COMPILER_FLAGS} QMAKE_CXXFLAGS_RELEASE += -O3 QMAKE_LIBS += -lrt -lpthread -ldl # Extra stuff (OpenGL, DirectFB, ...) QMAKE_INCDIR_EGL = QMAKE_LIBDIR_EGL = QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL} QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} **#DISTRO_OPTS += hard-float** (disabled completely) # No need for any special EGL device integration. # Prioritize the default, compiled-in integration over any plugins. EGLFS_DEVICE_INTEGRATION = none include(../common/linux_arm_device_post.conf) load(qt_config)
The configuration syntax as follow:
./configure -v -opensource -confirm-license -prefix /usr/local/qt5.11 -device linux-beagleboard-g++ -device-option CROSS_COMPILE=$HOME/gcc-linaro-4.9/bin/arm-linux-gnueabi- -qt-libpng -qt-libjpeg -qpa eglfs -no-opengl -qpa tslib -no-gcc-sysroot -release -no-use-gold-linker
This time ./configuration script succeeded, I hope this could be reference to someone who need solution.
please advise who to update the QT website page for BBB.
https://wiki.qt.io/BeagleBone_Black_Beginners_Guide
Thank you,@shylock said in Qt 5.11 for Beaglebone Black:
This time ./configuration script succeeded, I hope this could be reference to someone who need solution.
please advise who to update the QT website page for BBB.
https://wiki.qt.io/BeagleBone_Black_Beginners_GuideHey, wow, great news :-) Please also try the compilation itself, too - sometimes the configure tests do not pick all the issues up and compilation fails later (well, Qt is a big beast).
You should be able to modify the wiki page yourself - after editing it will display some scary error message but it is OK - the page will be put up for moderation (probably by @tekojo , I'm not sure who accepts the wiki changes).
-
Thank 4 confidence,
But I am still grappling with the following problem"./qt-arm-test: error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory"
I checked contents of directory of /usr/local/qt5.11/lib
cmake libQt5InputSupport.prl libQt5AccessibilitySupport.a libQt5Network.la libQt5AccessibilitySupport.la libQt5Network.prl libQt5AccessibilitySupport.prl libQt5Network.so libQt5Bootstrap.a libQt5Network.so.5 libQt5Bootstrap.la libQt5Network.so.5.10 libQt5Bootstrap.prl libQt5Network.so.5.10.1 libQt5Concurrent.la libQt5PrintSupport.la libQt5Concurrent.prl libQt5PrintSupport.prl libQt5Concurrent.so libQt5PrintSupport.so libQt5Concurrent.so.5 libQt5PrintSupport.so.5 libQt5Concurrent.so.5.10 libQt5PrintSupport.so.5.10 libQt5Concurrent.so.5.10.1 libQt5PrintSupport.so.5.10.1 libQt5Core.la libQt5ServiceSupport.a libQt5Core.prl libQt5ServiceSupport.la libQt5Core.so libQt5ServiceSupport.prl libQt5Core.so.5 libQt5Sql.la libQt5Core.so.5.10 libQt5Sql.prl libQt5Core.so.5.10.1 libQt5Sql.so libQt5DBus.la libQt5Sql.so.5 libQt5DBus.prl libQt5Sql.so.5.10 libQt5DBus.so libQt5Sql.so.5.10.1 libQt5DBus.so.5 libQt5Test.la libQt5DBus.so.5.10 libQt5Test.prl libQt5DBus.so.5.10.1 libQt5Test.so libQt5DeviceDiscoverySupport.a libQt5Test.so.5 libQt5DeviceDiscoverySupport.la libQt5Test.so.5.10 libQt5DeviceDiscoverySupport.prl libQt5Test.so.5.10.1 libQt5EdidSupport.a libQt5ThemeSupport.a libQt5EdidSupport.la libQt5ThemeSupport.la libQt5EdidSupport.prl libQt5ThemeSupport.prl libQt5EventDispatcherSupport.a libQt5Widgets.la libQt5EventDispatcherSupport.la libQt5Widgets.prl libQt5EventDispatcherSupport.prl libQt5Widgets.so libQt5FbSupport.a libQt5Widgets.so.5 libQt5FbSupport.la libQt5Widgets.so.5.10 libQt5FbSupport.prl libQt5Widgets.so.5.10.1 libQt5FontDatabaseSupport.a libQt5Xml.la libQt5FontDatabaseSupport.la libQt5Xml.prl libQt5FontDatabaseSupport.prl libQt5Xml.so libQt5Gui.la libQt5Xml.so.5 libQt5Gui.prl libQt5Xml.so.5.10 libQt5Gui.so libQt5Xml.so.5.10.1 libQt5Gui.so.5 libqtfreetype.a libQt5Gui.so.5.10 libqtfreetype.prl libQt5Gui.so.5.10.1 libqtlibpng.a libQt5InputSupport.a libqtlibpng.prl libQt5InputSupport.la pkgconfig
I manage to build the qt on my x86_64 server.
after "sudo make install on my dev machine"
I copied an entire directory of qt5.11 across the BBB and moved in /usr/local/qt5.11 directory structure.
the directory /usr/local/qt5.11/lib has all the libs which were build on theserver.
A quick small qt program developed and deployed to BBB to run ./qt-arm-test But
I have following problem
error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory
I ran ldconfig -v and my environment variable for LD_LIBRARY_PATH=/usr/local/qt5.11/libecho $LD_LIBRARY_PATH /usr/local/qt5.11/lib:/usr/local/lib:/lib/arm-linux-gnueabihf:/lib
while $PATH variable also points to qt5.11/lib directory.
But still, the application failed to run. How can be remedied this problem? I have thrown almost everything lock, stock n barrel. -
Check where it is looking for libQt5Widgets with ldd:
ldd qt-arm-test
You can also run it on your Qt .so files to see if they look correct.
-
I am using BBB with kernel 4.15.1 without any graphical server.
I understood that the QT provide graphical rendering on the screen. As I knew that
graphic rendering done by X11 windowing system or Framebuffer or EGLs by qt but in true sense egls require sgfx_graphic rendering manager to which currently not installed in fact none of x11, xorg, fb or sgx driver currently exists with kernel.
My requirements are minimum or no desktop graphical environment. The application program will render all the graphic through Qt's egls facility.
Can you please shed a light on this to run minimum graphic or only Qt-application will render graphics during its session.
How can be achieved. -
Qt can run without windowing system when you run it with EGLFS plugin. Possibly also with LinuxFB, but that plugin is not actively maintained anymore. You need to have the drivers and OpenGL libs installed.
To make sure EGLFS plugin is compiled, check your
configure
output.To run your application with EGLFS plugin, run it like this:
./your_app -platform eglfs
-
Hi
I built Qt5 for Beaglebone Black, ON BeagleBone Black computer itsefl with 'arm-linux-gnueabihf-' compiler located in the BBB's /usr/bin/ directory an entire qt5 build succeeded
cloning http://code.qt.io/cgit/qt/qt5.git/?h=5.11
and configuring as follow:
./configure -v -opensource -confirm-license -prefix /usr/local/qt5.11 -device linux-beagleboard-g++ -device-option
CROSS_COMPILE=/usr/arm-linux-gnueabihf- -qt-libpng -qt-libjpeg -no-opengl -qpa eglfs -no-gcc-sysroot -release -no-use-gold-linker -ico -gif -platform linux-clang
when I run a test program on the BBB computer I am keep getting following message:
This application failed to start because it could not find the Qt platform plugin "eglfs" in "".
Application platform plugins are: linuxfb, minimal, offscreen, vnc
Reinstalling the application may fix this problem.
Aborted.Although I have install xdm, xorg on BBB and I can startx window which run perfectly but my own test program cannot????
as you can see I included in my configure eglfs option.
Some help will be truly grateful
thank you, -
Check configure output - does it say that EGLFS support will actually be compiled?
xdm, xorg on BBB and I can startx
That's unrelated to EGLFS.
-
Hello Sierdzio,
I revisited my qt5 build as follow
/home/username/qt5/qtbase/src/plugins/platforms
Where Makefile resides. Runnings again 'make' that will build entire contents of platform directory including eglfs vnc and linuxfb ... etc.
while 'sudo make install' will get installed in /usr/local/qt5.11/... directory I assume. So the rebuilding platforms directory will definitely build eglfs and install.
Whats your thoughts ... pls let know. -
Hello Sierdzio,
I revisited my qt5 build as follow
/home/username/qt5/qtbase/src/plugins/platforms
Where Makefile resides. Runnings again 'make' that will build entire contents of platform directory including eglfs vnc and linuxfb ... etc.
while 'sudo make install' will get installed in /usr/local/qt5.11/... directory I assume. So the rebuilding platforms directory will definitely build eglfs and install.
Whats your thoughts ... pls let know.@shylock said in Qt 5.11 for Beaglebone Black:
Whats your thoughts ... pls let know.
None, I don't know what your question is ;)