Nominate our 2022 Qt Champions!

Qt 5.9 and aarch64 platform build woes

  • In the need to build Qt 5.9 from source for aarch64 platform. We need 5.9 to use the latest QMapboxGL plugin within QtLocation. Using QMapboxGL with 5.7.1 separately has a lot of negatives, like flickering map markers, etc, all solved with 5.9 and a QtLocation submodule that puts QMapboxGL as a map plugin.

    Running on Ubuntu x86_64, this all works out-of-the-box.

    Problems we are running into are just configuring Qt 5.9 on aarch64, where 5.7.1 from source (git) works without issue on aarch64.

    For starters, QMapboxGL requires g++ 5, our aarch64 OS, g++ -> 4.9, so adding in g++ 5 results in a binary g++-5. The only way I could get Qt built using that was modifying qtbase/mkspecs/common/g++-base.conf, Qt configure would not use CXX QMAKE_CXX etc... Ok easy enough.

    Then we encounter breakpad stuff from qtbase/mkspecs/features/default_post.prf, even though we do not have anything related to breakpad installed, again 5.7.1 worked, it kept enabling breakpad and since QT_BREAKPAD_ROOT_PATH is empty, the generated LINK lines were trying to execute /qtbreakpadsymbols which obviously doesn't exist. Commented out those to make it further.

    Next encounter I am unable to solve and appears related to the configure.json stuff, which seems new from 5.7.1 to 5.9...

    Running configuration tests...
    Checking for gold linker... yes
    Checking for valid makespec... yes
    Checking for target architecture... arm64
    Checking for C++14 support... yes
    Checking for Compiler... GCC 5.1.1
    Checking for compiler defaulting to C++11 or higher... no
    Checking for new dtags support... yes
    Checking for pkg-config... yes
    Checking for D-Bus >= 1.2 (host)... yes
    Checking for udev... yes
    Checking for mremap()... yes
    Project ERROR: Left hand side of || is non-boolean value 'arch.arm' in expression '(arch.arm || arch.arm64) && tests.neon'

    arch.arm64 is defined, but arch.arm seems broken, if I change the condition to just arch.arm64 it passes but than fails on a similar error for ICU

    Running configuration tests...
    Checking for clock_gettime()... yes
    Checking for POSIX monotonic clock... yes
    Checking for dlopen() in libc... no
    Checking for dlopen() in libdl... yes
    Checking for eventfd... yes
    Checking for GLib... yes
    Checking for POSIX iconv... yes
    Checking for inotify... yes
    Checking for SysV IPC... yes
    Checking for 64 bit atomics... yes
    Checking for ppoll()... yes
    Checking for slog2... no
    Checking for DoubleConversion... no
    Checking for PCRE2... no
    Checking for O_CLOEXEC... yes
    Checking for working std::atomic for function pointers... yes
    Checking for getaddrinfo()... yes
    Checking for getifaddrs()... yes
    Checking for IPv6 ifname... yes
    Checking for OpenSSL... yes
    Project ERROR: Evaluation of condition 'libs.db2' yielded non-boolean value 'libs.db2' in feature 'sql-db2'.

    Anyone know about the new configure.json and where I should be looking to fix this?


  • If it matters, Qt 5.8 on aarch64 configures and builds and also seems to use configure.json. So something new in 5.9

  • Lifetime Qt Champion

    Hi and welcome to devnet,

    5.9 being the current dev branch, you should rather bring this topic to the interest mailing list. You'll find there Qt's developers/maintainers. This forum is more user oriented.

  • Gotcha! Thanks!

Log in to reply