Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. [Solved] Qt 5.4.0 for i.MX6 - Configuration Failure
Forum Updated to NodeBB v4.3 + New Features

[Solved] Qt 5.4.0 for i.MX6 - Configuration Failure

Scheduled Pinned Locked Moved Mobile and Embedded
7 Posts 2 Posters 7.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    njozwiak
    wrote on last edited by
    #1

    Hi all,

    I'm trying to build Qt 5.4.0 for the i.MX6 and am having some issues right out of the gate with configuration. I have a rootfs built from the FSL Yocto BSP (Dizzy) that I am using. It is an unmodified rootfs built from the fsl-image-multimedia image and contains libraries and headers for GLES2, EGL, GAL, etc.

    I am using the 2013.10 Linaro HF toolchain: @gcc-linaro-arm-linux-gnueabihf-4.8-2013.10@

    Here is my qmake.conf file (mostly the same as the default one but included flags for OpenGL stuff):

    @include(../common/linux_device_pre.conf)

    EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_imx6.cpp

    QMAKE_INCDIR += $$[QT_SYSROOT]/usr/include
    QMAKE_LIBDIR += $$[QT_SYSROOT]/usr/lib

    QMAKE_INCDIR_OPENGL = $$[QT_SYSROOT]/usr/include/GL
    QMAKE_LIBDIR_OPENGL = $$[QT_SYSROOT]/usr/lib
    QMAKE_INCDIR_OPENGL_ES2 = $$[QT_SYSROOT]/usr/include/GLES2
    QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/usr/lib
    QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/include/GL
    QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/usr/lib

    QMAKE_LIBS_EGL += -lEGL
    QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL
    QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGAL

    QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib

    IMX6_CFLAGS = -march=armv7-a -mfpu=neon -mfloat-abi=hard -DLINUX=1 -DEGL_API_FB=1
    QMAKE_CFLAGS += $$IMX6_CFLAGS
    QMAKE_CXXFLAGS += $$IMX6_CFLAGS

    include(../common/linux_arm_device_post.conf)

    load(qt_config)@

    And my configure line:

    @configure -v -opensource -confirm-license
    -device imx6
    -device-option CROSS_COMPILE=/opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-
    -no-pch
    -no-xcb
    -opengl es2
    -make libs
    -sysroot /projects/client/imx6/rootfs -no-gcc-sysroot
    -prefix /opt/qt-5.4.0-imx6@

    The configuration is failing with the following errors:

    @OpenGL ES 2.0 auto-detection... ()
    /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -mfpu=neon -mfloat-abi=hard -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=softfp -O2 -Wall -W -fPIE -I/opt/qt-everywhere-opensource-src-5.4.0/qtbase/mkspecs/devices/linux-imx6-g++ -I/opt/qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/unix/opengles2 -I/projects/client/imx6/rootfs/usr/include/libdrm -I/projects/client/imx6/rootfs/usr/include/GLES2 -I/projects/client/imx6/rootfs/usr/include -I. -o opengles2.o /opt/qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/unix/opengles2/opengles2.cpp
    /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/projects/client/imx6/rootfs/usr/lib -Wl,-O1 -o opengles2 opengles2.o -L/projects/client/imx6/rootfs/usr/lib -lGLESv2 -lEGL -lGAL
    /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/libc.so.6
    /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /usr/lib/libc_nonshared.a
    /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/ld-linux-armhf.so.3
    collect2: error: ld returned 1 exit status
    make: *** [opengles2] Error 1
    OpenGL ES 2.0 disabled.
    The OpenGL ES 2.0 functionality test 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
    /opt/qt-everywhere-opensource-src-5.4.0/qtbase/mkspecs/devices/linux-imx6-g++.@

    Note that all of those libraries exist in paths that are included on the g++ line:

    @user@ubuntu:/projects/client/imx6/rootfs$ find . -name "libc.so.6"
    ./lib/libc.so.6
    user@ubuntu:/projects/client/imx6/rootfs$ find . -name "libc_nonshared.a"
    ./usr/lib/libc_nonshared.a
    user@ubuntu:/projects/client/imx6/rootfs$ find . -name "ld-linux-armhf.so.3"
    ./lib/ld-linux-armhf.so.3@

    Any ideas?

    1 Reply Last reply
    0
    • A Offline
      A Offline
      agocs
      wrote on last edited by
      #2

      Why are you using -no-gcc-sysroot ?

      1 Reply Last reply
      0
      • N Offline
        N Offline
        njozwiak
        wrote on last edited by
        #3

        This note is in the beginning of the devices/linux-imx6-g++/qmake.conf file shipped with the 5.4.0 source package:

        @# This mkspec is based and tested on the ltib-source-release 3.0.15

        Building ltib including glib, gpu-drivers and what ever you want to use (e.g. dbus or fontconfig)

        This mkspec is tested with a framebuffer (eglfs) configuration (not testes with X11)

        A typical configure line looks like:

        /home/tsenyk/qt5/qt5/configure -opensource -confirm-license -make libs -device imx6 \

        -device-option CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi- \

        -sysroot <path-to-your-ltib-install>/rootfs -no-gcc-sysroot \

        -prefix /usr/local/Qt-5.0.0/Qt5-imx6-1

        NOTE: currently ltib doesn't produce a proper staging/sysroot-filessystem.

        If gcc's --sysroot is used, the toolchain doesn't find basic binaries (e.g. crt1.o),

        therefore you have to pass -no-gcc-sysroot to configure if you pass -sysroot to configure!@

        I tried without the -no-gcc-sysroot flag and I get the following errors:

        @/opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -mfpu=neon -mfloat-abi=hard -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=softfp --sysroot=/projects/vgo/imx6/rootfs -O2 -Wall -W -fPIE -I/opt/qt-everywhere-opensource-src-5.4.0/qtbase/mkspecs/devices/linux-imx6-g++ -I/opt/qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/unix/opengles2 -I/projects/vgo/imx6/rootfs/usr/include/libdrm -I/projects/vgo/imx6/rootfs/usr/include/GLES2 -I/projects/vgo/imx6/rootfs/usr/include -I. -o opengles2.o /opt/qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/unix/opengles2/opengles2.cpp
        In file included from /projects/vgo/imx6/rootfs/usr/include/features.h:402:0,
        from /projects/vgo/imx6/rootfs/usr/include/stdint.h:25,
        from /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/lib/gcc/arm-linux-gnueabihf/4.8.2/include/stdint.h:9,
        from /projects/vgo/imx6/rootfs/usr/include/KHR/khrplatform.h:141,
        from /projects/vgo/imx6/rootfs/usr/include/GLES2/gl2platform.h:20,
        from /projects/vgo/imx6/rootfs/usr/include/GLES2/gl2.h:6,
        from /opt/qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/unix/opengles2/opengles2.cpp:37:
        /projects/vgo/imx6/rootfs/usr/include/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory

        include <gnu/stubs-soft.h>@

        1 Reply Last reply
        0
        • A Offline
          A Offline
          agocs
          wrote on last edited by
          #4

          Add DISTRO_OPTS += hard-float to that qmake.conf. You are now tareting softfp but the toolchain is for hard float.

          1 Reply Last reply
          0
          • N Offline
            N Offline
            njozwiak
            wrote on last edited by
            #5

            I saw that in a thread [http://qt-project.org/forums/viewthread/22959] and already made that change. It correctly sets the -mfloat-abi flag to hard in the build line... but no change in the errors I'm seeing.

            @Determining architecture... ()
            /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=hard -g -Wall -W -fPIE -I../../../../qt-everywhere-opensource-src-5.4.0/qtbase/mkspecs/devices/linux-imx6-g++ -I../../../../qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/arch -I/projects/client/imx6/rootfs/usr/include -I. -o arch.o ../../../../qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/arch/arch.cpp
            /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/projects/client/imx6/rootfs/usr/lib -o arch arch.o -L/projects/client/imx6/rootfs/usr/lib
            /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/libc.so.6
            /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /usr/lib/libc_nonshared.a
            /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/ld-linux-armhf.so.3
            collect2: error: ld returned 1 exit status
            make: *** [arch] Error 1
            Unable to determine architecture!@

            I have also tried to add the paths to those libraries in the toolchain to the QMAKE_LIBDIR flags:

            @QMAKE_LIBDIR += /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/lib
            QMAKE_LIBDIR += /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/arm-linux-gnueabihf/lib
            QMAKE_LIBDIR += /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/arm-linux-gnueabihf/libc/lib
            QMAKE_LIBDIR += /opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf@

            But the errors persists.

            1 Reply Last reply
            0
            • A Offline
              A Offline
              agocs
              wrote on last edited by
              #6

              Is this with -no-gcc-sysroot? The error shown there is clearly about gcc being confused since it tries to include softfp stuff.

              /projects/vgo/imx6/rootfs/usr/include/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory

              1 Reply Last reply
              0
              • N Offline
                N Offline
                njozwiak
                wrote on last edited by
                #7

                No, my latest reply was a configure execution that contained -no-gcc-sysroot.

                But I just ran a configure that omitted that flag AND had the corrected DISTRO_OPTS flag set in the qmake.conf and the configuration completed. I'm now in on to the make.

                Thanks for the help troubleshooting, agocs. Marking this thread as solved.

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved