How to build Qt for Raspberry Pi3
-
@aktay
1st of all - thank you so much for your help!git is definitely installed on host but was not installed on Pi. Installed & sync with 2_sync.sh.
on host:
//syoung@Ubuntu16-VM:~/raspi/src$ sudo git clone http://code.qt.io/qt/qtwebengine -b 5.8 Cloning into 'qtwebengine'... remote: Counting objects: 28483, done. remote: Compressing objects: 100% (20287/20287), done. remote: Total 28483 (delta 21000), reused 10717 (delta 7667) Receiving objects: 100% (28483/28483), 7.77 MiB | 1.56 MiB/s, done. Resolving deltas: 100% (21000/21000), done. Checking connectivity... done. `` syoung@Ubuntu16-VM:~/raspi/src$ cd qtwebengine/ syoung@Ubuntu16-VM:~/raspi/src/qtwebengine$ sudo ~/raspi/build/qt5.8-host/bin/qmake -r Info: creating stash file /home/syoung/raspi/src/qtwebengine/.qmake.stash Info: creating cache file /home/syoung/raspi/src/qtwebengine/.qmake.cache Running configuration tests... Checking for ALSA... yes Checking for PulseAudio >= 0.9.10... yes Done running configuration tests. Configure summary: Qt WebEngine: Proprietary Codecs ..................... no Spellchecker ........................... yes ALSA ................................... yes PulseAudio ............................. yes Qt is now configured for building. Just run 'make'. Once everything is built, Qt is installed. You should NOT run 'make install'. Note that this build cannot be deployed to other machines or devices. Prior to reconfiguration, make sure you remove any leftovers from the previous build. Project ERROR: Submodule qtwebengine-chromium does not exist. Run 'git submodule update --init'. syoung@Ubuntu16-VM:~/raspi/src/qtwebengine$
sudo git submodule update --init ... syoung@Ubuntu16-VM:~/raspi/src/qtwebengine$ sudo git submodule update --init Submodule 'src/3rdparty' (http://code.qt.io/qt/qtwebengine-chromium.git) registered for path 'src/3rdparty' Cloning into 'src/3rdparty'... remote: Counting objects: 477672, done. remote: Compressing objects: 100% (372217/372217), done. remote: Total 477672 (delta 294696), reused 168949 (delta 97583) Receiving objects: 100% (477672/477672), 797.69 MiB | 4.51 MiB/s, done. Resolving deltas: 100% (294696/294696), done. Checking connectivity... done. Submodule path 'src/3rdparty': checked out '675c165d44ac5d39e9b37263e561dc1673f3bfa4' syoung@Ubuntu16-VM:~/raspi/src/qtwebengine$
syoung@Ubuntu16-VM:~/raspi/src/qtwebengine$ sudo ~/raspi/build/qt5.8-host/bin/qmake -r Running configuration tests... Done running configuration tests. Configure summary: Qt WebEngine: Proprietary Codecs ..................... no Spellchecker ........................... yes ALSA ................................... yes PulseAudio ............................. yes Qt is now configured for building. Just run 'make'. Once everything is built, Qt is installed. You should NOT run 'make install'. Note that this build cannot be deployed to other machines or devices. Prior to reconfiguration, make sure you remove any leftovers from the previous build. Running configure tests Checking for alsa... yes Checking for khr... yes Checking for libvpx... no Checking for snappy... no Checking for srtp... no Project MESSAGE: PKG_CONFIG_LIBDIR automatically set to /home/syoung/raspi/sysroot/usr/lib/pkgconfig:/home/syoung/raspi/sysroot/usr/share/pkgconfig:/home/syoung/raspi/sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig Project MESSAGE: PKG_CONFIG_SYSROOT_DIR automatically set to /home/syoung/raspi/sysroot System zlib or minizip not found. Using Chromium's copies. System libwebp or libwebpdemux not found. Using Chromium's copies. System libevent not found. Using Chromium's copy. System jsoncpp not found. Using Chromium's copy. System opus not found. Using Chromium's copy. System protobuf not found. Using Chromium's copy. Compatible system libvpx not found. Using Chromium's copy. System libsrtp not found. Using Chromium's copy. System snappy not found. Using Chromium's copy. System library dependencies: ICU ................................ Using internal copy (Default, force system ICU with WEBENGINE_CONFIG+=use_system_icu) FFMPEG ............................. Using internal copy (Default, force system FFMPEG with WEBENGINE_CONFIG+=use_system_ffmpeg) Optional system libraries used ..... libxslt libxml2 Optional bundled libraries used .... libevent jsoncpp opus protobuf libvpx srtp snappy icu ffmpeg Configurable features: Proprietary codecs (H264, MP3) ..... Not enabled (Default, enable with WEBENGINE_CONFIG+=use_proprietary_codecs) Geolocation ........................ Not enabled (Requires Qt Positioning module) Certificate handling ............... Using bundled BoringSSL Reading /home/syoung/raspi/src/qtwebengine/src/src.pro Reading /home/syoung/raspi/src/qtwebengine/src/core/core.pro Reading /home/syoung/raspi/src/qtwebengine/src/core/core_headers.pro Project MESSAGE: perl -w /home/syoung/raspi/build/qt5.8-host/bin/syncqt.pl -module QtWebEngineCore -version 5.8.1 -outdir /home/syoung/raspi/src/qtwebengine /home/syoung/raspi/src/qtwebengine <srcbase> = /home/syoung/raspi/src/qtwebengine <outbase> = /home/syoung/raspi/src/qtwebengine QtWebEngineCore: created fwd-include header(s) for <srcbase>/src/core/api/ { qtwebenginecoreglobal.h (1), qtwebenginecoreglobal_p.h (1), qwebenginecallback.h (2), qwebenginecallback_p.h (1), qwebenginecookiestore.h (2), qwebenginecookiestore_p.h (1), qwebengineurlrequestinfo.h (2), qwebengineurlrequestinfo_p.h (1), qwebengineurlrequestinterceptor.h (2), qwebengineurlrequestjob.h (2), qwebengineurlschemehandler.h (2) } QtWebEngineCore: created version header QtWebEngineCore: created master header QtWebEngineCore: created headers.pri file Reading /home/syoung/raspi/src/qtwebengine/src/core/core_gyp_generator.pro Reading /home/syoung/raspi/src/qtwebengine/src/core/gyp_configure_host.pro Reading /home/syoung/raspi/src/qtwebengine/src/core/gyp_configure_target.pro Reading /home/syoung/raspi/src/qtwebengine/src/core/gyp_run.pro Project MESSAGE: PKG_CONFIG_LIBDIR automatically set to /home/syoung/raspi/sysroot/usr/lib/pkgconfig:/home/syoung/raspi/sysroot/usr/share/pkgconfig:/home/syoung/raspi/sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig Project MESSAGE: PKG_CONFIG_SYSROOT_DIR automatically set to /home/syoung/raspi/sysroot Project MESSAGE: Running gyp_qtwebengine "/home/syoung/raspi/src/qtwebengine/src/core" -D qt_cross_compile=1 -D os_posix=1 -D qt_os="embedded_linux" -I config/embedded_linux.gypi -D pkg-config="/home/syoung/raspi/src/qtwebengine/src/core/pkg-config_wrapper.sh 2> /dev/null" -D use_qt=1 -D v8_use_external_startup_data=0 -D enable_web_speech=0 -D enable_extensions=0 -D linux_use_bundled_gold=0 -D linux_use_bundled_binutils=0 -D linux_use_gold_flags=0 -D toolkit_uses_gtk=0 -D use_ash=0 -D use_aura=1 -D use_cairo=0 -D use_clipboard_aurax11=0 -D use_cups=0 -D use_gconf=0 -D use_gio=0 -D use_gnome_keyring=0 -D use_kerberos=0 -D use_pango=0 -D use_openssl=1 -D use_allocator=none -D use_experimental_allocator_shim=0 -D use_nss_certs=0 -D use_nss_verifier=0 -D use_openssl_certs=1 -D use_system_libpng=1 -D use_system_libjpeg=1 -D use_pulseaudio=1 -D use_alsa=1 -D use_system_libxml=1 -D clang=0 -D desktop_linux=0 -D disable_nacl=1 -D embedded=1 -D enable_autofill_dialog=0 -D enable_automation=0 -D enable_basic_printing=0 -D enable_captive_portal_detection=0 -D enable_extensions=0 -D enable_google_now=0 -D enable_language_detection=0 -D enable_managed_users=0 -D enable_pdf=0 -D enable_plugin_installation=0 -D enable_plugins=0 -D enable_print_preview=0 -D enable_session_service=0 -D enable_task_manager=0 -D enable_themes=0 -D enable_webrtc=0 -D gtest_target_type=none -D host_clang=0 -D notifications=0 -D ozone_auto_platforms=0 -D ozone_platform_dri=0 -D ozone_platform_test=0 -D p2p_apis=0 -D safe_browsing=0 -D toolkit_views=1 -D use_custom_freetype=0 -D use_libpci=0 -D use_ozone=1 -D use_system_fontconfig=1 -D use_x11=0 -D v8_use_snapshot=false -D want_separate_host_toolset=1 -D angle_enable_gl=0 -D qtwe_process_name_debug=QtWebEngineProcess -D qtwe_process_name_release=QtWebEngineProcess -D disable_glibcxx_debug=1 -D remove_webcore_debug_symbols=1 -D remove_v8base_debug_symbols=1 -D disable_fatal_linker_warnings=1 -D sysroot="/home/syoung/raspi/sysroot" -D CXX="/home/syoung/raspi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++" -D target_arch=arm -D arm_arch="armv8-a" -D arm_tune="cortex-a53" -D arm_float_abi="hard" -D arm_version="8" -D arm_fpu="crypto-neon-fp-armv8" -D arm_neon=1 -D release_optimize=s -D debug_optimize=s -D win_release_Optimization=1 -D release_unwind_tables=0 -D enable_spellcheck=1. using python: /usr/bin/python version: 2.7.12 Using extra options found in /home/syoung/raspi/src/qtwebengine/src/core/qmake_extras.gypi Using extra options found in /home/syoung/raspi/src/qtwebengine/src/core/qtwebengine_extras.gypi Using extra options found in /home/syoung/raspi/src/qtwebengine/src/core/qmake_extras.gypi Using extra options found in /home/syoung/raspi/src/qtwebengine/src/core/qtwebengine_extras.gypi Updating projects from gyp files... gyp: name 'arm_thumb' is not defined while evaluating condition 'arm_thumb==1' in /home/syoung/raspi/src/qtwebengine/src/core/resources/resources.gyp gyp: name 'arm_thumb' is not defined while evaluating condition 'arm_thumb==1' in /home/syoung/raspi/src/qtwebengine/src/core/core_generated.gyp Project ERROR: -- running gyp_qtwebengine failed -- syoung@Ubuntu16-VM:~/raspi/src/qtwebengine$
-
-
@sly110 said in How to build Qt for Raspberry Pi3:
sudo git submodule update --init
You can review the below guide.
https://wiki.qt.io/How_to_Try_QtWebEngine -
I believe this is finally solved although it was an arduous process.
-
Started with fresh Ubuntu16 LTS and fresh Jessie Lite
-
Followed Aktays instructions to manually build qtwebengine. Each time it failed, tried to determine missing dependencies. This is what is needed on the VM in addition to those listed in Kukkimonsuta/rpi-buildqt : gperf, bison, flex, gcc-mulitlib, g++ mulitlib, libx32gcc-4.8-dev.
Thanks to everyone who helped!
-
-
@sly110
What did you do that actually solved the "gyp: name 'arm_thumb' is not defined" error?Is this actually linked to missing dependencies on the host or target?
I've been trying to cross-compile Qt 5.8 for my RPi3 many different ways now, including the steps mentioned here, but I always end up with this error when it tries to compile qtwebengine.
-
I am also trying to crosscompile qt in raspberry pi 2 for the past weeks following the
https://www.ics.com/blog/configuring-qt-creator-raspberry-pi
https://wiki.qt.io/RaspberryPi2EGLFS
. I configured it without any errors. When i am running a console application the output is getting displayed on the raspberry pi but when i am trying to debug a widget application i am getting this displayed in my qt creator.
Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.Could not load shared library symbols for 22 libraries, e.g. /usr/lib/arm-linux-gnueabihf/libarmmem.so.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).can anyone help me in this?
thanks in advance -
Hi amruz,
the build of your qt libraries is not in you sysroot. You can either copy qt5pi directory to <your sysroot>/usr/local/ on your development host or tell gdb to load the libraries from your target (see https://forum.qt.io/topic/76928/raspberry-pi-3-debug-info-how-to-fix/38)
-
@sneubert i tried by writing these commands in additional startup commands in qt
set sysroot target:/
but the same warning is coming..
when i am running a console app it is getting displayed in the raspberry without any problems.
but for widget applicationUnable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).is coming.
:( -
ok, my answer was to solve the problem not beeing abel to debug your application:
Unable to find dynamic linker breakpoint function. GDB will be unable to debug shared library initializers and track explicitly loaded dynamic code.Could not load shared library symbols for 22 libraries, e.g. /usr/lib/arm-linux-gnueabihf/libarmmem.so. Use the "info sharedlibrary" command to see the complete listing. Do you need "set solib-search-path" or "set sysroot"?
for the remaining message:
Unable to query physical screen size, defaulting to 100 dpi. To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
take a look at previous posts in this forum, e.g.
https://forum.qt.io/topic/77387/eglfs-unable-to-query-physical-screen-size-defaulting-to-100-dpi -
Work around for arm_thumb error is to be found here
https://github.com/Kukkimonsuta/rpi-buildqt/pull/7Following
https://github.com/Kukkimonsuta/rpi-buildqt/issues/8
I succeeded even in compiling 5.9 (arm_thumb work around was not necessary any more)Both qtwebengine 5.8 and 5.9 work nicely and fast BUT mouse interaction does not work (only keyboard). Anybody had this experience? Very frustrating after all the trouble...