Cross compile Qt 5.7 for raspberry pi 3 problem : font (text words) in application not showing up during running
- 
Note that /usr/local/qt5pi/lib/fonts is supposed to be flat, meaning the ttf files must be right in there, without any subdirectories. An alternative, if you do not want to copy anything, is to set QT_QPA_FONTDIR to something suitable, f.ex. /usr/share/fonts/truetype/dejavu (do export QT_QPA_FONTDIR=/usr/share/fonts/truetype/dejavu before running the application) This is of course just a workaround. Why Qt was configured without fontconfig support (this is visible in the summary that is printed after running configure, look for a line with something like "fontconfig ..... no"), is a different question. It usually happens when a system Freetype is not available. Did you follow step #3 at https://wiki.qt.io/RaspberryPi2EGLFS in order to get a rootfs that has the necessary headers/libs? 
- 
Note that /usr/local/qt5pi/lib/fonts is supposed to be flat, meaning the ttf files must be right in there, without any subdirectories. An alternative, if you do not want to copy anything, is to set QT_QPA_FONTDIR to something suitable, f.ex. /usr/share/fonts/truetype/dejavu (do export QT_QPA_FONTDIR=/usr/share/fonts/truetype/dejavu before running the application) This is of course just a workaround. Why Qt was configured without fontconfig support (this is visible in the summary that is printed after running configure, look for a line with something like "fontconfig ..... no"), is a different question. It usually happens when a system Freetype is not available. Did you follow step #3 at https://wiki.qt.io/RaspberryPi2EGLFS in order to get a rootfs that has the necessary headers/libs? @agocs Thank you for you answer. I will check this out as soos as I can. About fontconfig support, the following is the summary of the build with -fonconfing included: Build options: 
 Mode ................................... release; optimized tools
 Building shared libraries .............. yes
 Using C++ standard ..................... C++14
 Using gold linker ...................... yes
 Using new DTAGS ........................ yes
 Using precompiled headers .............. yes
 Using LTCG ............................. no
 Target compiler supports:
 NEON ................................. no
 Build parts ............................ libs
 Qt modules and options:
 Qt Concurrent .......................... yes
 Qt D-Bus ............................... yes
 Qt D-Bus directly linked to libdbus .... no
 Qt Gui ................................. yes
 Qt Network ............................. yes
 Qt Sql ................................. yes
 Qt Testlib ............................. yes
 Qt Widgets ............................. yes
 Qt Xml ................................. yes
 Support enabled for:
 Accessibility .......................... yes
 Using pkg-config ....................... no
 QML debugging .......................... yes
 udev ................................... yes
 Using system zlib ...................... yes
 Qt Core:
 DoubleConversion ....................... yes
 Using system DoubleConversion ........ no
 GLib ................................... no
 iconv .................................. no
 ICU .................................... yes
 Logging backends:
 journald ............................. no
 syslog ............................... no
 slog2 ................................ no
 Using system PCRE ...................... no
 Qt Network:
 getaddrinfo() .......................... yes
 getifaddrs() ........................... yes
 IPv6 ifname ............................ yes
 libproxy ............................... no
 OpenSSL ................................ yes
 Qt directly linked to OpenSSL ........ no
 SCTP ................................... no
 Use system proxies ..................... yes
 Qt Sql:
 DB2 (IBM) .............................. no
 InterBase .............................. no
 MySql .................................. yes
 OCI (Oracle) ........................... no
 ODBC ................................... yes
 PostgreSQL ............................. yes
 SQLite2 ................................ yes
 SQLite ................................. yes
 Using system provided SQLite ......... no
 TDS (Sybase) ........................... yes
 Qt Gui:
 FreeType ............................... yes
 Using system FreeType ................ no
 HarfBuzz ............................... yes
 Using system HarfBuzz ................ no
 Fontconfig ............................. no
 Image formats:
 GIF .................................. yes
 ICO .................................. yes
 JPEG ................................. yes
 Using system libjpeg ............... yes
 PNG .................................. yes
 Using system libpng ................ no
 OpenGL:
 EGL .................................. yes
 Desktop OpenGL ....................... no
 OpenGL ES 2.0 ........................ yes
 OpenGL ES 3.0 ........................ no
 OpenGL ES 3.1 ........................ no
 Session Management ..................... yes
 Features used by QPA backends:
 evdev .................................. yes
 libinput ............................... no
 mtdev .................................. no
 tslib .................................. yes
 xkbcommon-evdev ........................ no
 QPA backends:
 DirectFB ............................... no
 EGLFS .................................. yes
 EGLFS details:
 EGLFS i.Mx6 .......................... no
 EGLFS i.Mx6 Wayland .................. no
 EGLFS EGLDevice ...................... no
 EGLFS GBM ............................ no
 EGLFS Mali ........................... no
 EGLFS Raspberry Pi ................... yes
 EGL on X11 ........................... no
 LinuxFB ................................ yes
 Mir client ............................. no
 X11:
 Using system provided XCB libraries .. yes
 EGL on X11 ........................... no
 Xinput2 .............................. yes
 XCB XKB .............................. yes
 XLib ................................. yes
 Xrender .............................. yes
 XCB render ........................... yes
 XCB GLX .............................. yes
 XCB Xlib ............................. yes
 Using system-provided xkbcommon ...... no
 Qt Widgets:
 GTK+ ................................... no
 Styles ................................. Fusion Windows
 Qt PrintSupport:
 CUPS ................................... yes
 Qt SerialBus:
 Socket CAN ............................. yes
 Socket CAN FD .......................... yes
 QtXmlPatterns:
 XML schema support ..................... yes
 Qt QML:
 QML interpreter ........................ yes
 QML network support .................... yes
 Qt Quick:
 Direct3D 12 ............................ no
 AnimatedImage item ..................... yes
 Canvas item ............................ yes
 Support for Quick Designer ............. yes
 Flipable item .......................... yes
 GridView item .......................... yes
 ListView item .......................... yes
 Path support ........................... yes
 PathView item .......................... yes
 Positioner items ....................... yes
 ShaderEffect item ...................... yes
 Sprite item ............................ yes
 Qt 3D:
 System Assimp .......................... no
 Qt Wayland Drivers:
 EGL .................................... yes
 Rasberry Pi ............................ yes
 XComposite EGL ......................... no
 XComposite GLX ......................... no
 DRM EGL ................................ no
 libhybris EGL .......................... no
 Qt Wayland Client ........................ yes
 Qt Wayland Compositor .................... yes
 Qt Bluetooth:
 BlueZ .................................. no
 BlueZ Low Energy ....................... no
 Linux Crypto API ....................... no
 Qt Multimedia:
 ALSA ................................... yes
 GStreamer 1.0 .......................... no
 GStreamer 0.10 ......................... no
 Video for Linux ........................ yes
 OpenAL ................................. no
 PulseAudio ............................. no
 Resource Policy (libresourceqt5) ....... no
 DirectShow ............................. no
 Qt Location:
 Gypsy GPS Daemon ....................... no
 WinRT Geolocation API .................. no
 Qt Sensors:
 sensorfw ............................... no
 Qt WebEngine:
 Proprietary Codecs ..................... no
 Spellchecker ........................... yes
 ALSA ................................... yes
 PulseAudio ............................. noNote: Also available for Linux: linux-clang linux-kcc linux-icc linux-cxx Note: -optimized-tools is not useful in -release mode. WARNING: Cross compiling without sysroot. Disabling pkg-config ERROR: Feature 'fontconfig' was enabled, but the pre-condition '!config.win32 && !config.darwin && features.system-freetype && libs.fontconfig' failed. I'm not able to activate the feature it says : ERROR: Feature 'fontconfig' was enabled, but the pre-condition '!config.win32 && !config.darwin && features.system-freetype && libs.fontconfig' failed. Thanks in advance 
- 
@agocs Thank you for you answer. I will check this out as soos as I can. About fontconfig support, the following is the summary of the build with -fonconfing included: Build options: 
 Mode ................................... release; optimized tools
 Building shared libraries .............. yes
 Using C++ standard ..................... C++14
 Using gold linker ...................... yes
 Using new DTAGS ........................ yes
 Using precompiled headers .............. yes
 Using LTCG ............................. no
 Target compiler supports:
 NEON ................................. no
 Build parts ............................ libs
 Qt modules and options:
 Qt Concurrent .......................... yes
 Qt D-Bus ............................... yes
 Qt D-Bus directly linked to libdbus .... no
 Qt Gui ................................. yes
 Qt Network ............................. yes
 Qt Sql ................................. yes
 Qt Testlib ............................. yes
 Qt Widgets ............................. yes
 Qt Xml ................................. yes
 Support enabled for:
 Accessibility .......................... yes
 Using pkg-config ....................... no
 QML debugging .......................... yes
 udev ................................... yes
 Using system zlib ...................... yes
 Qt Core:
 DoubleConversion ....................... yes
 Using system DoubleConversion ........ no
 GLib ................................... no
 iconv .................................. no
 ICU .................................... yes
 Logging backends:
 journald ............................. no
 syslog ............................... no
 slog2 ................................ no
 Using system PCRE ...................... no
 Qt Network:
 getaddrinfo() .......................... yes
 getifaddrs() ........................... yes
 IPv6 ifname ............................ yes
 libproxy ............................... no
 OpenSSL ................................ yes
 Qt directly linked to OpenSSL ........ no
 SCTP ................................... no
 Use system proxies ..................... yes
 Qt Sql:
 DB2 (IBM) .............................. no
 InterBase .............................. no
 MySql .................................. yes
 OCI (Oracle) ........................... no
 ODBC ................................... yes
 PostgreSQL ............................. yes
 SQLite2 ................................ yes
 SQLite ................................. yes
 Using system provided SQLite ......... no
 TDS (Sybase) ........................... yes
 Qt Gui:
 FreeType ............................... yes
 Using system FreeType ................ no
 HarfBuzz ............................... yes
 Using system HarfBuzz ................ no
 Fontconfig ............................. no
 Image formats:
 GIF .................................. yes
 ICO .................................. yes
 JPEG ................................. yes
 Using system libjpeg ............... yes
 PNG .................................. yes
 Using system libpng ................ no
 OpenGL:
 EGL .................................. yes
 Desktop OpenGL ....................... no
 OpenGL ES 2.0 ........................ yes
 OpenGL ES 3.0 ........................ no
 OpenGL ES 3.1 ........................ no
 Session Management ..................... yes
 Features used by QPA backends:
 evdev .................................. yes
 libinput ............................... no
 mtdev .................................. no
 tslib .................................. yes
 xkbcommon-evdev ........................ no
 QPA backends:
 DirectFB ............................... no
 EGLFS .................................. yes
 EGLFS details:
 EGLFS i.Mx6 .......................... no
 EGLFS i.Mx6 Wayland .................. no
 EGLFS EGLDevice ...................... no
 EGLFS GBM ............................ no
 EGLFS Mali ........................... no
 EGLFS Raspberry Pi ................... yes
 EGL on X11 ........................... no
 LinuxFB ................................ yes
 Mir client ............................. no
 X11:
 Using system provided XCB libraries .. yes
 EGL on X11 ........................... no
 Xinput2 .............................. yes
 XCB XKB .............................. yes
 XLib ................................. yes
 Xrender .............................. yes
 XCB render ........................... yes
 XCB GLX .............................. yes
 XCB Xlib ............................. yes
 Using system-provided xkbcommon ...... no
 Qt Widgets:
 GTK+ ................................... no
 Styles ................................. Fusion Windows
 Qt PrintSupport:
 CUPS ................................... yes
 Qt SerialBus:
 Socket CAN ............................. yes
 Socket CAN FD .......................... yes
 QtXmlPatterns:
 XML schema support ..................... yes
 Qt QML:
 QML interpreter ........................ yes
 QML network support .................... yes
 Qt Quick:
 Direct3D 12 ............................ no
 AnimatedImage item ..................... yes
 Canvas item ............................ yes
 Support for Quick Designer ............. yes
 Flipable item .......................... yes
 GridView item .......................... yes
 ListView item .......................... yes
 Path support ........................... yes
 PathView item .......................... yes
 Positioner items ....................... yes
 ShaderEffect item ...................... yes
 Sprite item ............................ yes
 Qt 3D:
 System Assimp .......................... no
 Qt Wayland Drivers:
 EGL .................................... yes
 Rasberry Pi ............................ yes
 XComposite EGL ......................... no
 XComposite GLX ......................... no
 DRM EGL ................................ no
 libhybris EGL .......................... no
 Qt Wayland Client ........................ yes
 Qt Wayland Compositor .................... yes
 Qt Bluetooth:
 BlueZ .................................. no
 BlueZ Low Energy ....................... no
 Linux Crypto API ....................... no
 Qt Multimedia:
 ALSA ................................... yes
 GStreamer 1.0 .......................... no
 GStreamer 0.10 ......................... no
 Video for Linux ........................ yes
 OpenAL ................................. no
 PulseAudio ............................. no
 Resource Policy (libresourceqt5) ....... no
 DirectShow ............................. no
 Qt Location:
 Gypsy GPS Daemon ....................... no
 WinRT Geolocation API .................. no
 Qt Sensors:
 sensorfw ............................... no
 Qt WebEngine:
 Proprietary Codecs ..................... no
 Spellchecker ........................... yes
 ALSA ................................... yes
 PulseAudio ............................. noNote: Also available for Linux: linux-clang linux-kcc linux-icc linux-cxx Note: -optimized-tools is not useful in -release mode. WARNING: Cross compiling without sysroot. Disabling pkg-config ERROR: Feature 'fontconfig' was enabled, but the pre-condition '!config.win32 && !config.darwin && features.system-freetype && libs.fontconfig' failed. I'm not able to activate the feature it says : ERROR: Feature 'fontconfig' was enabled, but the pre-condition '!config.win32 && !config.darwin && features.system-freetype && libs.fontconfig' failed. Thanks in advance @Angel-Popov Call configure with additional -v parameter, then you should see why fontconfig check fails (most probably missing libs/header). 
- 
Note that /usr/local/qt5pi/lib/fonts is supposed to be flat, meaning the ttf files must be right in there, without any subdirectories. An alternative, if you do not want to copy anything, is to set QT_QPA_FONTDIR to something suitable, f.ex. /usr/share/fonts/truetype/dejavu (do export QT_QPA_FONTDIR=/usr/share/fonts/truetype/dejavu before running the application) This is of course just a workaround. Why Qt was configured without fontconfig support (this is visible in the summary that is printed after running configure, look for a line with something like "fontconfig ..... no"), is a different question. It usually happens when a system Freetype is not available. Did you follow step #3 at https://wiki.qt.io/RaspberryPi2EGLFS in order to get a rootfs that has the necessary headers/libs? @agocs I solved on QT 5.8 by providing fonts in Qt/lib/fonts without any subdirectories. However, the graphics quality is not so good and animations run slow. It says, in the debug console as I run the app, that JIT is disabled and it is required for fluid animations. How can I improve the graphics, enable JIT and have better performance? Thanks 
- 
I am encountering this exact situation as well. Spent many hours on it, still not solved In my environment sysroot + pkg-config are fully configured. Using Qt 5.8 If I poke into the pkgconfig folder fontconfig does report it's there. /usr/lib/arm-linux-gnueabihf/libfontconfig.so in sysroot is present 
- 
I am encountering this exact situation as well. Spent many hours on it, still not solved In my environment sysroot + pkg-config are fully configured. Using Qt 5.8 If I poke into the pkgconfig folder fontconfig does report it's there. /usr/lib/arm-linux-gnueabihf/libfontconfig.so in sysroot is present 
- 
@Malachi Are fontconfig header files present in the sysroot? 
 Pass -v parameter to configure and check what it says about fontconfig.
- 
The files must be in the sysroot for your target, not from your desktop distribution. 
- 
In that case, you can pass the -v option to configure and check what happens with fontconfig there. 
- 
I'm already passing in -v to ./configure. Is there somewhere else I should be passing it in? I have been fiddling around, and trying to use system-freetype as the prereq for fontconfig (I hope I am understanding that properly). I did notice something in the config.log about that: /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/bin/armv6-rpi-linux-gnueabihf-g++ -Wl,-rpath-link,/home/malachi/Projects/rpi/zero/sysroot/opt/vc/lib -Wl,-rpath-link,/home/malachi/Projects/rpi/zero/sysroot/usr/lib/armv6-rpi-linux-gnueabihf -Wl,-rpath-link,/home/malachi/Projects/rpi/zero/sysroot/lib/armv6-rpi-linux-gnueabihf -mfloat-abi=hard -Wl,-O1 -fuse-ld=gold -o freetype freetype.o -L/home/malachi/Projects/rpi/zero/sysroot/usr/lib/arm-linux-gnueabihf -lfreetype > /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.4/../../../../armv6-rpi-linux-gnueabihf/bin/ld.gold: error: cannot open /lib/arm-linux-gnueabihf/libc.so.6: No such file or directory > /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.4/../../../../armv6-rpi-linux-gnueabihf/bin/ld.gold: error: cannot open /usr/lib/arm-linux-gnueabihf/libc_nonshared.a: No such file or directory > /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.4/../../../../armv6-rpi-linux-gnueabihf/bin/ld.gold: error: cannot open /lib/arm-linux-gnueabihf/ld-linux-armhf.so.3: No such file or directory > ../sysdeps/arm/start.S:124: error: undefined reference to '__libc_start_main' > ../sysdeps/arm/start.S:128: error: undefined reference to 'abort' > ../sysdeps/arm/start.S:113: error: undefined reference to '__libc_csu_fini' > ../sysdeps/arm/start.S:120: error: undefined reference to '__libc_csu_init' > collect2: error: ld returned 1 exit status > Makefile:64: recipe for target 'freetype' failed > make: *** [freetype] Error 1 => source failed verification.I seems the linker is looking for the raw target paths to find some libs, but of course on the cross-compiling host those paths aren't present. I had to specify "-no-gcc-sysroot" to get things to compile in general, is it possible that flag is causing a problem here? I'm definitely specifying the -sysroot parameter...so this one surprised me It's worth noting I'm using a crosstool-ng toolchain, targeting GCC 4.9 LINARO 
- 
Do you mean that you are using a self-built toolchain ? 
- 
@SGaist yes ct-ng has an rpi preset, so I'm more or less using that EDIT: If "no-gcc-sysroot" is not specified, we see: /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/bin/armv6-rpi-linux-gnueabihf-g++ -Wl,-rpath-link,/home/malachi/Projects/rpi/zero/sysroot/opt/vc/lib -Wl,-rpath-link,/home/malachi/Projects/rpi/zero/sysroot/usr/lib/armv6-rpi-linux-gnueabihf -Wl,-rpath-link,/home/malachi/Projects/rpi/zero/sysroot/lib/armv6-rpi-linux-gnueabihf -mfloat-abi=hard --sysroot=/home/malachi/Projects/rpi/zero/sysroot -Wl,-O1 -fuse-ld=gold -o verifyspec verifyspec.o > /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.4/../../../../armv6-rpi-linux-gnueabihf/bin/ld.gold: error: cannot open crt1.o: No such file or directory > /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.4/../../../../armv6-rpi-linux-gnueabihf/bin/ld.gold: error: cannot open crti.o: No such file or directory > /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.4/../../../../armv6-rpi-linux-gnueabihf/bin/ld.gold: error: cannot open crtn.o: No such file or directory > /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.4/../../../../armv6-rpi-linux-gnueabihf/bin/ld.gold: error: cannot find -lstdc++ > /home/malachi/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.4/../../../../armv6-rpi-linux-gnueabihf/bin/ld.gold: error: cannot find -lm ...The lines like: -rpath-link,/home/malachi/Projects/rpi/zero/sysroot/lib/armv6-rpi-linux-gnueabihfare wrong. Should be -rpath-link,/home/malachi/Projects/rpi/zero/sysroot/lib/arm-linux-gnueabihfIs there an additional config option for me to specify this? Strangely, even if I symlink an armv6-rpi-linux-gnueabihf folder into existence it still fails... 
- 
Why not use the Raspberry Pi provided toolchain ? 
- 
@SGaist Reason is, I don't know if it (the provided toolchain) will fully work within buildroot environment, which is where I want to end up eventually. That and for other projects, ct-ng has been working quite nicely. That said, it is feeling like time to at least give the provided toolchain a shot EDIT: So, using the provided toolchain (gcc-linaro-arm-linux-gnueabihf-raspbian-x64) faces issues compiling qtwebkit and qtwebengine modules (demands NEON code). Are these modules supported on ARMv6? 
- 
Had the same issue cross-compiling Qt 5.8 for the Pi 2. Turns out it was caused by having absolute links in libraries in the sysroot. I fixed the problem using the symlinks program. Use the following commands on the Pi to fix it before running configure on the host (much cleaner than the fixQualifiedLibraryPaths shell script suggested on several Pi sites): mkdir ~/tmp 
 cd ~/tmp
 git clone https://github.com/brandt/symlinks
 cd symlinks
 makeEdit Makefile (e.g. vi Makefile) and add the following variable definition: INSTALL = /usr/bin/install Save and then run these commands: sudo mkdir /usr/man/man8 
 sudo make install
 sudo symlinks -cr /usr/lib /lib
- 
Had the same issue cross-compiling Qt 5.8 for the Pi 2. Turns out it was caused by having absolute links in libraries in the sysroot. I fixed the problem using the symlinks program. Use the following commands on the Pi to fix it before running configure on the host (much cleaner than the fixQualifiedLibraryPaths shell script suggested on several Pi sites): mkdir ~/tmp 
 cd ~/tmp
 git clone https://github.com/brandt/symlinks
 cd symlinks
 makeEdit Makefile (e.g. vi Makefile) and add the following variable definition: INSTALL = /usr/bin/install Save and then run these commands: sudo mkdir /usr/man/man8 
 sudo make install
 sudo symlinks -cr /usr/lib /lib
- 
something can resolve the problem ????? 
- 
Fonts copied FROM /usr/share/fonts/truetype/dejavu/ TO target device: /usr/local/Qt5pi/lib/fonts - The Fonts folder had to be created manually.
 And it worked !!!! 
 
