Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Problem with lib and include dirs when building qt lib



  • Hi there,

    I'm currently working on a project where I have to cross compile the Qt library for an aarch64 device. The thing is that, whenever I try to configure, the output shows that none of the include nor lib paths has been added to the makefile but the compiler default ones.

    My qmake.conf file is this one :

    #
    # qmake configuration for Jetson TX1 boards running 64-bit Linux For Tegra
    # (tested with R24.2, sample root filesystem)
    #
    # Note that this environment has been tested with X11 only.
    #
    # A typical configure line might look like the following:
    #
    # configure \
    #   -device linux-jetson-tx1-g++ \
    #   -device-option CROSS_COMPILE=/opt/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- \
    #   -sysroot /opt/Linux_for_Tegra/rootfs
    #
    # Note that this builds for GLX + OpenGL. To use EGL + OpenGL ES instead, pass
    # -opengl es2 and ensure the rootfs has the headers (rootfs/usr/include/EGL,
    # GLES2, GLES3), which may not be the case out of the box.
    #
    # Check the configure output carefully, some features may be disabled due to the
    # rootfs not having the necessary dev files.
    #
    # If getting cryptic linker errors from static libs like libm.a, check that the
    # symlinks libm.so, libz.so, etc. under rootfs/usr/lib/aarch64-linux-gnu are not
    # broken. If they are, due to using absolute paths, change them so that they are
    # relative to rootfs.
    
    include(../common/linux_device_pre.conf)
    
    QMAKE_INCDIR_POST += \
        $$[QT_SYSROOT]/usr/include \
        $$[QT_SYSROOT]/usr/include/aarch64-linux-gnu
    
    QMAKE_LIBDIR_POST += \
        $$[QT_SYSROOT]/usr/lib \
        $$[QT_SYSROOT]/lib/aarch64-linux-gnu \
        $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \
        $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu/tegra
    
    QMAKE_RPATHLINKDIR_POST += \
        $$[QT_SYSROOT]/usr/lib \
        $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \
        $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu/tegra \
        $$[QT_SYSROOT]/lib/aarch64-linux-gnu
    
    DISTRO_OPTS += aarch64
    COMPILER_FLAGS += -mtune=cortex-a57.cortex-a53 -march=armv8-a
    
    # When configured with -opengl es2, eglfs will be functional with its
    # dummy fullscreen X11 backend, in addition to xcb.
    EGLFS_DEVICE_INTEGRATION = eglfs_x11
    
    include(../common/linux_arm_device_post.conf)
    load(qt_config)
    

    And this is the first part of the output when I try to configure:

    jose@jose-GS65-Stealth-Thin-8RE:~/Descargas/qt-everywhere-opensource-src-5.3.2$ ./configure -opensource -release -v -confirm-license -no-sql-sqlite -no-sql-mysql -device linux-jetson-tx1-g++ -device-option CROSS_COMPILE=/usr/bin/aarch64-linux-gnu- -sysroot /home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs -nomake examples -nomake tests -prefix /usr/local/qt5 -extprefix /home/jose/JETSON_TX2/64_TX2/qt5 -hostprefix /home/jose/JETSON_TX2/64_TX2/qt5-host -opengl es2
    + cd qtbase
    + /home/jose/Descargas/qt-everywhere-opensource-src-5.3.2/qtbase/configure -top-level -opensource -release -v -confirm-license -no-sql-sqlite -no-sql-mysql -device linux-jetson-tx1-g++ -device-option CROSS_COMPILE=/usr/bin/aarch64-linux-gnu- -sysroot /home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs -nomake examples -nomake tests -prefix /usr/local/qt5 -extprefix /home/jose/JETSON_TX2/64_TX2/qt5 -hostprefix /home/jose/JETSON_TX2/64_TX2/qt5-host -opengl es2
    
    This is the Qt Open Source Edition.
    
    You are licensed to use this software under the terms of
    the Lesser GNU General Public License (LGPL) versions 2.1.
    You are also licensed to use this software under the terms of
    the GNU General Public License (GPL) versions 3.
    
    You have already accepted the terms of the Open Source license.
    
    Precompiled-headers support enabled.
    /usr/bin/aarch64-linux-gnu-g++ -c -fvisibility=hidden fvisibility.c
    Symbol visibility control enabled.
    /usr/bin/aarch64-linux-gnu-g++ --sysroot=/home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c
    bsymbolic_functions.c:2:2: error: #error "Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129)."
     #error "Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129)."
      ^
    Symbolic function binding disabled.
    DEFAULT_INCDIRS="/usr/aarch64-linux-gnu/include/c++/5
    /usr/aarch64-linux-gnu/include/c++/5/aarch64-linux-gnu
    /usr/aarch64-linux-gnu/include/c++/5/backward
    /usr/lib/gcc-cross/aarch64-linux-gnu/5/include
    /usr/lib/gcc-cross/aarch64-linux-gnu/5/include-fixed
    /usr/aarch64-linux-gnu/include
    /home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs/usr/include/aarch64-linux-gnu
    /home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs/usr/include
    "
    DEFAULT_LIBDIRS="/usr/lib/gcc-cross/aarch64-linux-gnu/5
    /usr/aarch64-linux-gnu/lib
    /home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs/lib/aarch64-linux-gnu
    /home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs/lib
    /home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs/usr/lib/aarch64-linux-gnu
    /home/jose/JETSON_TX2/64_TX2/Linux_for_Tegra/rootfs/usr/lib
    "
    Creating qmake...
    

    Any idea ? Thanks so much

    Cheers


  • Lifetime Qt Champion

    Hi,

    Why use such an outdated version of Qt ?
    Did you modify the Jetson mkspec ?



  • Hello there,

    Regarding to the version, is just for compatibility purposes.

    The jetson mkspec was downloaded from the qt 5.9 branch on git and has not been modified.

    Cheers


Log in to reply