armv7 embedded device with no Graphical interface



  • Hello all, what would be the best QT application for armv7 32 bit, based device, which has no Graphical interface. Therefore it could process and run the c++ application but the visualization would have to run remotely (Web Browser) . Just trying to get started here, we have to spend a couple of f day researching and there is no precompiled solution for oru target.

    Specs:
    ARM ® Cortex®-A9 2 x 800 Mhz (armv7)
    YOCTO Linux

    thanks in advance


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Are you thinking about something like the new wasm backend ?



  • @jasonnnn QWebChannel seems like a good fit.



  • Thnaks a lot for replying guys

    That would work for me I guess, i just need some guidance on how to build it, I even built from source on it, but was an older version I believe 5.4 which would no support the Web Assembly .

    If I only want to do the Web Assembly, do I still need to build the whole QT 5.13 into my target ??

    Just to supply you guys with some more info , here are the results of my build

    Build type: linux-g++ (arm, CPU features: <none>)
    Compiler: gcc 7.2.0
    Configuration: use_gold_linker compile_examples enable_new_dtags largefile precompile_header shared rpath release c++11 c++14 c++1z concurrent dbus no-pkg-config reduce_exports stl
    Build options:
    Mode ................................... release
    Optimize release build for size ........ no
    Building shared libraries .............. yes
    Using C standard ....................... C11
    Using C++ standard ..................... C++1z
    Using ccache ........................... no
    Using gold linker ...................... yes
    Using new DTAGS ........................ yes
    Using precompiled headers .............. yes
    Using LTCG ............................. no
    Target compiler supports:
    NEON ................................. no
    Build parts ............................ libs examples tools
    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 ....................... no
    udev ................................... no
    Using system zlib ...................... no
    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 ....................... no
    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 ............... no
    PNG .................................. yes
    Using system libpng ................ no
    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-evdev ........................ 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
    Qt SerialBus:
    Socket CAN ............................. yes
    Socket CAN FD .......................... no
    Qt QML:
    QML network support .................... yes
    QML debugging and profiling support .... yes
    QML sequence object .................... yes
    QML list model ......................... yes
    QML XML http request ................... yes
    QML Locale ............................. yes
    QML delegate model ..................... yes
    Qt Quick:
    Direct3D 12 ............................ no
    AnimatedImage item ..................... yes
    Canvas item ............................ yes
    Support for Qt Quick Designer .......... yes
    Flipable item .......................... yes
    GridView item .......................... yes
    ListView item .......................... yes
    TableView item ......................... yes
    Path support ........................... yes
    PathView item .......................... yes
    Positioner items ....................... yes
    Repeater item .......................... yes
    ShaderEffect item ...................... yes
    Sprite item ............................ yes
    Qt Scxml:
    ECMAScript data model for QtScxml ...... yes
    Qt Gamepad:
    SDL2 ................................... no
    Qt 3D:
    Assimp ................................. yes
    System Assimp .......................... no
    Output Qt3D Job traces ................. no
    Output Qt3D GL traces .................. no
    Use SSE2 instructions .................. no
    Use AVX2 instructions .................. no
    Aspects:
    Render aspect ........................ yes
    Input aspect ......................... yes
    Logic aspect ......................... yes
    Animation aspect ..................... yes
    Extras aspect ........................ yes
    Qt 3D Renderers:
    OpenGL Renderer ........................ yes
    Qt 3D GeometryLoaders:
    Autodesk FBX ........................... no
    Qt Wayland Client ........................ no
    Qt Wayland Compositor .................... no
    Qt Bluetooth:
    BlueZ .................................. no
    BlueZ Low Energy ....................... no
    Linux Crypto API ....................... no
    WinRT Bluetooth API (desktop & UWP) .... no
    Qt Sensors:
    sensorfw ............................... no
    Qt Quick Controls 2:
    Styles ................................. Default Fusion Imagine Material Universal
    Qt Quick Templates 2:
    Hover support .......................... yes
    Multi-touch support .................... yes
    Qt Positioning:
    Gypsy GPS Daemon ....................... no
    WinRT Geolocation API .................. no
    Qt Location:
    Qt.labs.location experimental QML plugin . yes
    Geoservice plugins:
    OpenStreetMap ........................ yes
    HERE ................................. yes
    Esri ................................. yes
    Mapbox ............................... yes
    MapboxGL ............................. no
    Itemsoverlay ......................... yes
    QtXmlPatterns:
    XML schema support ..................... yes
    Qt Multimedia:
    ALSA ................................... no
    GStreamer 1.0 .......................... no
    GStreamer 0.10 ......................... no
    Video for Linux ........................ yes
    OpenAL ................................. no
    PulseAudio ............................. no
    Resource Policy (libresourceqt5) ....... no
    Windows Audio Services ................. no
    DirectShow ............................. no
    Windows Media Foundation ............... no
    Qt WebEngine:
    Embedded build ......................... no
    Pepper Plugins ......................... yes
    Printing and PDF ....................... yes
    Proprietary Codecs ..................... no
    Spellchecker ........................... yes
    Native Spellchecker .................... no
    WebRTC ................................. yes
    Use System Ninja ....................... no
    Geolocation ............................ yes
    WebChannel support ..................... yes
    Use v8 snapshot ........................ yes
    Kerberos Authentication ................ no
    Use ALSA ............................... no
    Use PulseAudio ......................... no
    Optional system libraries used:
    re2 .................................. no
    icu .................................. no
    libwebp, libwebpmux and libwebpdemux . no
    opus ................................. no
    ffmpeg ............................... no
    libvpx ............................... no
    snappy ............................... no
    glib ................................. no
    zlib ................................. no
    minizip .............................. no
    libevent ............................. no
    jsoncpp .............................. no
    protobuf ............................. no
    libxml2 and libxslt .................. no
    lcms2 ................................ no
    png .................................. no
    JPEG ................................. no
    harfbuzz ............................. no
    freetype ............................. no
    x11 .................................. no
    Required system libraries:
    fontconfig ........................... no
    dbus ................................. no
    nss .................................. no
    khr .................................. no
    glibc ................................ yes
    Required system libraries for qpa-xcb:
    libdrm ............................... no
    xcomposite ........................... no
    xcursor .............................. no
    xi ................................... no
    xrandr ............................... no
    xtst ................................. no

    Note: Also available for Linux: linux-clang linux-icc

    Note: QtSerialBus: Newer kernel needed for flexible data-rate frame support (canfd_frame).

    Note: No wayland-egl support detected. Cross-toolkit compatibility disabled.

    WARNING: gperf is required to build QtWebEngine.

    WARNING: host pkg-config not found

    ERROR: The OpenGL functionality tests failed!
    You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
    QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platf


  • Lifetime Qt Champion

    No, just start with qtbase, once you have it continue with the other modules you need.



  • thanks for the reply again, would that be the contrib you refer to https://github.com/qt/qtbase ??


  • Lifetime Qt Champion

    GitHub is a mirror, the official sources are at https://code.qt.io. However, you seem to have already the sources so there's no need to clone it again.



  • @sgaist thnaks, but the source i compiled was an old version I belive 5.4, it would have to be upate correct ??

    I am just going to rebuild using 5.13. Now as far as the next steps how do I go about to get the Web assembly running and imported from the QT creator

    thanks



  • while trying to run configure i got this, i did clone from https://code.qt.io.

    root@axcf2152:/opt/qt5/qtbase# ./configure
    Can't locate File/Basename.pm in @INC (you may need to install the File::Basename module) (@INC contains: /etc/perl /usr/lib/perl/site_perl/5.24.4/ /usr/lib/perl/site_perl/5.24.4 /usr/lib/perl/vendor_perl/5.24.4/ /usr/lib/perl/vendor_perl/5.24.4 /usr/lib/perl/5.24.4/ /usr/lib/perl/5.24.4 /usr/local/lib/site_perl /usr/lib/perl/5.24.4 .) at /opt/qt5/qtbase/bin/syncqt.pl line 47.
    BEGIN failed--compilation aborted at /opt/qt5/qtbase/bin/syncqt.pl line 47.


  • Lifetime Qt Champion

    Did you clone qtbase directly ?

    In any case, I would recommend to put the sources somewhere a standard user can access (it's home directory for example) rather that building stuff as root.

    That said, you can clone the qt5 repository and then follow the instructions to get all the sources checkout out properly.



  • We are changing the focus and following this guide as well

    running into problems with emsdk

    Error: No tool or SDK found by name 'sdk-releases-fastcomp-f3030d9fffcc9e1287cb6b8e72982e94ece31d71-64bit'.


  • Lifetime Qt Champion

    Which guide ?



  • https://wiki.qt.io/Qt_for_WebAssembly

    my question on that is when i build from source do I only need to build QTbase ??

    thanks


  • Lifetime Qt Champion

    If you want to use QtQuick, you should also build qtdeclarative.



  • I am really not sure about what we need to be totally honest, QT has some many options it becomes overwhelming.

    We do understand that the functionality we need lies on QT Web Assembly, What would exactly the source package dependencies and all that I need to build to run the QT web assembly ?? is qt declarative and QTquick mandatories, we need this deployment as light as possible


  • Lifetime Qt Champion

    Mandatory ? No they are not, it depends mainly on what your application should show/do. If you need some fancy animations, then QtQuick is the way to go.



  • I have successfully built QTbase and emsdk (nodejs ) , what would be the next step?


  • Lifetime Qt Champion

    Create a small application and follow the Build and Run applications part of the guide you are following. Then you shall have an application ready.



  • while building

    ./configure xplatform wasm-emscripten -nomake examples -prefix $PWD/qtbase

    • cd qtbase
    • /opt/qt5/qtbase/configure -top-level xplatform wasm-emscripten -nomake examples -prefix /opt/qt5/qtbase
      <srcbase> = /opt/qt5/qtbase
      <bldbase> = /opt/qt5/qtbase
      <outbase> = /opt/qt5/qtbase
      Creating qmake...
      .Done.
      ERROR: Invalid command line parameter 'xplatform'.

  • Qt Champions 2018

    @jasonnnn said in armv7 embedded device with no Graphical interface:

    'xplatform'.

    should be -xplatform



  • thank you caught that,

    now i am getting this one

    ./configure -xplatform wasm-emscripten -nomake examples -prefix $PWD/qtbase + cd qtbase

    • /opt/qt5/qtbase/configure -top-level -xplatform wasm-emscripten -nomake examples -prefix /opt/qt5/qtbase
      <srcbase> = /opt/qt5/qtbase
      <bldbase> = /opt/qt5/qtbase
      <outbase> = /opt/qt5/qtbase
      Creating qmake...
      .Done.
      Project ERROR: Cannot run target compiler 'em++'. Output:
      ===================
      ===================
      Maybe you forgot to setup the environment?

  • Lifetime Qt Champion

    Is the compiler findable in your PATH environment variable ?



  • @sgaist how could I check that ? , i did execute source ./emsdk_env.sh


  • Lifetime Qt Champion

    First thing, try to call em++ in the same terminal you are currently building Qt in.



  • @sgaist thanks for supporting, we are finding problems building Emscripten , thatis the main reason why QT will no build. Unfortunately, we may have to give up on QT for this project.

    I don't believe you guys would be supporting un on the emscripten side, but just in case here is the build error (next post)


  • Lifetime Qt Champion

    I'm not sure I understood your issue with the emc compiler.

    In any case, the error log is missing.



  • SOrry for the missing pieces, so I am not sure if i am missing dependencies on my embbeded device, so too prrof concept I am trying to build on an Unbuntu 64, and the problem appears to be the same ,

    1 i built emsdk

    2 git clone QT5, Qtbase and QTdeclaratives

    3 tried to build QT with ./configure -xplatform wasm-emscripten -nomake examples -prefix $PWD/qtbase
    then got (execute the call on em++ which appears to be there)

    Info: creating super cache file /opt/qt5/.qmake.super
    Info: creating cache file /opt/qt5/.qmake.cache
    Project ERROR: Cannot run target compiler 'em++'. Output:

    ===================
    Maybe you forgot to setup the environment?
    root@osboxes:/opt/qt5# em++
    Traceback (most recent call last):
    File "/opt/emsdk/emscripten/1.38.31/emcc.py", line 41, in <module>
    from tools import shared, system_libs, client_mods, js_optimizer, jsrun
    File "/opt/emsdk/emscripten/1.38.31/tools/shared.py", line 782, in <module>
    CLANG_CC = os.path.expanduser(build_clang_tool_path(exe_suffix('clang')))
    File "/opt/emsdk/emscripten/1.38.31/tools/shared.py", line 647, in build_clang_tool_path
    return os.path.join(LLVM_ROOT, tool)
    File "/usr/lib/python2.7/posixpath.py", line 70, in join
    elif path == '' or path.endswith('/'):
    AttributeError: 'NoneType' object has no attribute 'endswith'

    thanks in advance


  • Lifetime Qt Champion

    You seem to use a version of the emsdk that is not mentioned in the Qt for Web Assembly wiki entry.

    Did you try to use one of these ?


Log in to reply