Cross compile Qt 5.7 for raspberry pi 3 problem : font (text words) in application not showing up during running



  • hello
    i am making widgets application so i followed the step from this website..... https://www.ics.com/blog/configuring-qt-creator-raspberry-pi But while running the application font is not showing in it.

    i am new to Qt , please help me.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Check whether you don't have an empty font folder in your Qt installation on your target.



  • @SGaist
    yes sir i checked it this directory : /usr/local/qt5pi/lib there was no font folder
    before adding the folder :
    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).
    QFontDatabase: Cannot find font directory /usr/local/qt5pi/lib/fonts.
    Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
    QFontDatabase: Cannot find font directory /usr/local/qt5pi/lib/fonts.
    Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
    QFontDatabase: Cannot find font directory /usr/local/qt5pi/lib/fonts.
    Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
    QFontDatabase: Cannot find font directory /usr/local/qt5pi/lib/fonts.
    Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.

    so i copied two folders ( fonts & fontconfig ) from directory : /usr/share then i paste it to
    directory : /usr/local/qt5pi/lib
    now /usr/local/qt5pi/lib/fonts/turetype (this directory contain of dejavu folder and it's files , ttf-dejavu folder and it's files inside it ) inside the fonts folder this folder are present truetype ,type1,x11 .

    after adding the folder:
    after running the application it shows only

    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).

    still fonts are not showing in the application in the raspberry pi 3 which is connected to display : http://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)
    which i had did was correct ? sir ....?


  • Lifetime Qt Champion

    Just to be sure, you are still seeing your application on that screen, only no text, correct ?



  • @SGaist
    yes.... that is the problem.


  • Lifetime Qt Champion

    What distribution are you running on your Pi ?



  • @SGaist
    PIXEL - (2017-01-11 ) this is the os i use in raspberry pi...


  • Lifetime Qt Champion

    So the Raspbian base image.

    What options did you pass to Qt when you built it ?



  • @subi Did you find any solution? I have the exact same problem. Thanks.



  • Hi there!
    I have the same problem. My applications runs without displaying any text, in addition the graphics quality is bad.
    As configuring options I pass ./configure -v -opengl es2 -device linux-rasp-pi-g''+ -device-option CROSS_COMPILE=/usr/bin/ -optimized-qmake -reduce-exports -release -qt-pcre -qt-libpng -make libs -prefix /usr/local/qt5

    Note: I did native build QT 5.8



  • @Angel-Popov said in cross compile Qt 5.7 for raspberry pi 3 problem : font (text words) in application not showing up during running:

    Note: I did native build QT 5.8

    How did you do the native build of 5.8? I'm struggling with 5.7 for a while now it seems all wiki's are outdated for a Rasp3/Jessie build?



  • @larry104 I followed just these few simple steps https://blog.kaloshin.ru/2016/12/10/raspberry-pi-3-и-qt-5-8/
    And as far as I remember I did pass -skip qtgamepad.

    However, the text problem remains.



  • 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 ............................. no

    Note: 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


  • Moderators

    @Angel-Popov Call configure with additional -v parameter, then you should see why fontconfig check fails (most probably missing libs/header).



  • @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


  • Moderators

    @Malachi Are fontconfig header files present in the sysroot?
    Pass -v parameter to configure and check what it says about fontconfig.



  • @jsulm I will check this



  • The fontconfig header files are present in /usr/include/fontconfig

    I pass in -v, however when I review config.log the only mention of fontconfig is where I explicit specify it on the command line


  • Lifetime Qt Champion

    The files must be in the sysroot for your target, not from your desktop distribution.



  • Yes, we're on the same page. I omitted the full path for brevity, actual path is:

    host: ~/Projects/rpi/zero/sysroot/usr/include/fontconfig
    target: /usr/include/fontconfig

    with flag "-sysroot ~/Projects/rpi/zero/sysroot" passed into ./configure


  • Lifetime Qt Champion

    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


  • Lifetime Qt Champion

    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-gnueabihf

    are wrong. Should be

    -rpath-link,/home/malachi/Projects/rpi/zero/sysroot/lib/arm-linux-gnueabihf

    Is 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...


  • Lifetime Qt Champion

    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
    make

    Edit 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



  • @CharlesV I'll give this a try. Pretty sure I symlinked properly, but your cleaner script could do the trick. I'm really worried that rpi0 just doesn't support JIT....



  • 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 !!!!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.