Building Qt for BeagleBone working Debian 9.5



  • Hi everyone,
    I am working on some project where I need to developed GUI using QT for my custom board having the same architecture as Beaglebone. I am completely new to Qt so don't know in details. I have read some document and saw some video and start to work.

    My host System is Ubuntu 18LTS and device(CustomBoard) running on Debian 9.5 2018-10-07 4GB SD IoT.

    But while building the QT framework, I am facing a problem.

    I have followed the process as mention in the document here:
    https://wiki.qt.io/BeagleBone_Black_Beginners_Guide.

    First all, this document hasn't updated since a long time as well as All the blog and tutorial for building Qt framework for Beaglebone are too old and most of dependencies requirement changed(e.g. Toolchain directory).

    In that file, cross compiler tool needed but that linked not valid So I don't where should I get this file..?

    Anyway while executing this command:
    "sudo apt-get install libgles2-mesa-dev libcap-dev libbz2-dev libgcrypt11-dev libpci-dev libnss3-dev build-essential libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libdrm-dev libfontconfig1-dev libxtst-dev libasound2-dev gperf libcups2-dev libpulse-dev libudev-dev libssl-dev flex bison ruby libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev i2c-tools libi2c-dev libstdc++6 lib32stdc++6 "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev"

    I Have got a error :
    libgstreamer0.10-dev not found
    libgstreamer-plugins-base0.10-dev not found.
    So i remove both and execute the command again and it was successful.
    Now to with process as mention document and execute the following command:

    "/configure -device linux-beagleboard-g++ -device-option CROSS_COMPILE=/opt/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/bbb-rootfs -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt5bbb -hostprefix /usr/local/qt5bbb -no-xcb -qt-zlib -no-opengl -qt-libpng -nomake examples -nomake tests -no-xkb -no-xshape -no-xsync -no-xcursor -no-xfixes -no-xrandr -no-kms -no-eglfs -no-xcb -no-accessibility -no-opengl -skip multimedia -skip webkit -no-gui -no-widgets -no-egl -no-openvg -openssl -no-qml-debug -v"

    Now I got an error while building the whole Qt framework as mention below:
    ERROR: Unknown command line option '-no-xshape'.

    What have I missed that process?
    is that document still valid to follow.? if not please tell me whole process!

    Any help will be appreciated!

    Thanks


  • Qt Champions 2018

    @GC_Dev said in Building Qt for BeagleBone working Debian 9.5:

    In that file, cross compiler tool needed but that linked not valid So I don't where should I get this file..?

    From the board provider or the same for BeagleBone if it is compatible.

    "Anyway while executing this command" - where? You need these packages for your target device, not host. Usually you install needed packages on your device and use its root file system as sysroot on your host to cross compile.

    "ERROR: Unknown command line option '-no-xshape'." - simply remove -no-xshape from configure call.



  • Hi jsulm,
    Thanks for reply,

    where should i searched complier tool for beaglebone? I have searched lot but i didnt find anything. share link if you anyone for compiler tool.
    I mount sd card in a host that pointing to rootfs of device.
    i have remove -no-xshape and then i got again error like "ERROR: Unknown command line option '-no-xsync'."

    so i remove " -no-xsync -no-xcursor -no-xfixes -no-xrandr -no-kms -no-eglfs -no-xcb -no-accessibility -no-opengl" and execute below command:

    "sudo ./configure -device linux-beagleboard-g++ -device-option CROSS_COMPILE=/opt/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/bbb-rootfs -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt5bbb -hostprefix /usr/local/qt5bbb -no-xcb -qt-zlib -no-opengl -qt-libpng -nomake examples -nomake tests -no-xkb -skip multimedia -skip webkit -no-gui -no-widgets -no-egl -no-openvg -openssl -no-qml-debug -v"

    i got new error now:

    "Checking for valid makespec... Note: Also available for Linux: linux-clang linux-icc
    ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken."

    This is my fine execution for above error:

    "sudo ./configure -device linux-beagleboard-g++ -device-option CROSS_COMPILE=/opt/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/bbb-rootfs -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt5bbb -hostprefix /usr/local/qt5bbb -no-xcb -qt-zlib -no-opengl -qt-libpng -nomake examples -nomake tests -no-xkb -no-gui -no-widgets -no-egl -no-openvg -openssl"

    Thanks


  • Qt Champions 2018

    @GC_Dev said in Building Qt for BeagleBone working Debian 9.5:

    where should i searched complier tool for beaglebone?

    Google says https://github.com/tshakthipradeep/BBB/wiki/Chapter-1:-BeagleBone-Black-SDK-Download-&-Installation

    "ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken."" - well, if you don't have the toolchain for your device (compiler) then it is not going to work.
    You provided this: CROSS_COMPILE=/opt/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- does it exist and is executable?
    You can add -v parameter to configure call to get more information about what is going on.



  • jsulm,
    yes, it is executable and already in that folder.
    Can you tell me the whole process for building QT for Beaglebone?.
    because I am getting a new error every time when I build.

    Build is completed and i got qmake in /usr/local/qt5bbb_1/bin
    But while configuring Qt Version in Qtcreater apps, it's showing :

    "Name:
    Qt 5.12.3 (qt5bbb_1)
    Invalid Qt version"

    What is the problem here?
    Does Qt5.12.3 possible to use with Debian 9.5 running beaglebone?.

    can anyone tell me how to build Qt 5.12.3 for BeagleBone running debian 9.5


  • Qt Champions 2018

    @GC_Dev said in Building Qt for BeagleBone working Debian 9.5:

    What is the problem here?

    Where does it say the Qt version is invalid?
    If you built Qt for your device then you need to configure a Kit in QtCreator. In that Kit you need to select same compiler as you used for Qt and your self built Qt.



  • jsulm,
    Its showing i Qt creater apps while configuring complier in kit section and when i select the my built compiler,its shown as invalid.
    i have one question that debian on device having compiler version:
    "arm-linux-gnueabihf-g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516"

    and my host machine having complier that i have downloaded from linaro site(gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf):

    "arm-linux-gnueabihf-gcc (Linaro GCC 5.5-2017.10) 5.5.0"

    if you see both compiler are different. is that matter here.?


  • Qt Champions 2018

    @GC_Dev You should use same compiler version.
    Can you show what exactly happens when you try to add the compiler in QtCreator?



  • Jsulm,
    I gussed that i have solved building problem by using the same compiler i.e. (gcc-linaro- 6.3.1-x86_64_arm-linux-gnueabihf_).
    its build successfully and created the executable file but now new error arrived.

    In QT created, When i run the program its start to deploying and showing this error:
    "
    17:44:31: Starting /home/debian/Helloworld_BBB ...
    qt.qpa.plugin: Could not find the Qt platform plugin "eglfs" in ""
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

    Available platform plugins are: linuxfb, minimal, offscreen, vnc.
    "
    So what did i miss again?



  • jsulm,

    here is my configuration summaries:
    Configure summary:

    Building on: linux-g++ (x86_64, CPU features: mmx sse sse2)
    Building for: devices/linux-beagleboard-g++ (arm, CPU features: neon)
    Target compiler: gcc 6.3.1
    Configuration: cross_compile use_gold_linker compile_examples enable_new_dtags largefile neon precompile_header shared rpath release c++11 c++14 concurrent dbus reduce_exports release_tools stl
    Build options:
    Mode ................................... release; optimized tools
    Optimize release build for size ........ no
    Building shared libraries .............. yes
    Using C standard ....................... C11
    Using C++ standard ..................... C++14
    Using ccache ........................... no
    Using gold linker ...................... yes
    Using new DTAGS ........................ yes
    Using precompiled headers .............. yes
    Using LTCG ............................. no
    Target compiler supports:
    NEON ................................. yes
    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:
    Using pkg-config ....................... yes
    udev ................................... yes
    Using system zlib ...................... yes
    Qt Core:
    DoubleConversion ....................... yes
    Using system DoubleConversion ........ no
    GLib ................................... no
    iconv .................................. yes
    ICU .................................... no
    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 ................................ no
    Qt directly linked to OpenSSL ........ no
    OpenSSL 1.1 ............................ no
    DTLS ................................... no
    SCTP ................................... no
    Use system proxies ..................... yes
    Qt Gui:
    Accessibility .......................... yes
    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 ................ yes
    EGL .................................... no
    OpenVG ................................. no
    OpenGL:
    Desktop OpenGL ....................... no
    OpenGL ES 2.0 ........................ no
    OpenGL ES 3.0 ........................ no
    OpenGL ES 3.1 ........................ no
    OpenGL ES 3.2 ........................ no
    Vulkan ................................. no
    Session Management ..................... yes
    Features used by QPA backends:
    evdev .................................. yes
    libinput ............................... no
    INTEGRITY HID .......................... no
    mtdev .................................. no
    tslib .................................. no
    xkbcommon .............................. no
    X11 specific:
    XLib ................................. no
    XCB Xlib ............................. no
    EGL on X11 ........................... no
    QPA backends:
    DirectFB ............................... no
    EGLFS .................................. no
    LinuxFB ................................ yes
    VNC .................................... yes
    Mir client ............................. no
    Qt Sql:
    SQL item models ........................ yes
    Qt Widgets:
    GTK+ ................................... no
    Styles ................................. Fusion Windows
    Qt PrintSupport:
    CUPS ................................... no
    Qt Sql Drivers:
    DB2 (IBM) .............................. no
    InterBase .............................. no
    MySql .................................. no
    OCI (Oracle) ........................... no
    ODBC ................................... no
    PostgreSQL ............................. no
    SQLite2 ................................ no
    SQLite ................................. yes
    Using system provided SQLite ......... no
    TDS (Sybase) ........................... no
    Qt Testlib:
    Tester for item models ................. yes

    if you see above its showing EGLFS .................................. no so thats problem i guessed.
    So how to add that libraries and how can i make it yes in configuration.?


  • Qt Champions 2018

    @GC_Dev Do you want to use eglfs?
    If you do then add -v to your configure call and see why exactly eglfs is disabled.
    If you don't you can use one of the other platform plug-ins. For example: -platform linuxfb



  • jsulm,
    I just want to run my application beaglebone so i dont mind with any pulgins.
    As i mention it showing error while deploying on beaglebone from QT creater apps:

    qt.qpa.plugin: Could not find the Qt platform plugin "eglfs" in ""
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

    So How can i solve this..?


  • Qt Champions 2018

    @GC_Dev As I said try to use other platform plug-in, for example linuxfb if you're using framebuffer: add "-platform linuxfb" when calling your app.
    You should also know what is actually used on your device (framebuffer, X11, ...).



  • jsulm,
    I am a little bit confuse Where should i add "-platform linuxfb"? is in QT creator or somewhere else?
    As deploying from Qtcreater i don't find such an option there.
    i don't know which one using either framebuffer or X11?
    can you help me out?


  • Qt Champions 2018

    @GC_Dev said in Building Qt for BeagleBone working Debian 9.5:

    Where should i add

    As parameter to your application when you start it.
    "i don't know which one using either framebuffer or X11?
    can you help me out?" - no I can't. I have no idea what exactly you're using and what is running on that device. You should know or find out.



  • @GC_Dev said in Building Qt for BeagleBone working Debian 9.5:

    i add "-platform linuxfb"? is in QT creator or somewhere else?

    try running your app from command line:

    /path/to/my/app -platform linuxfb
    



Log in to reply
 

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