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. QT5 build errors with arm tool chain (Cross Compiling)
Qt 6.11 is out! See what's new in the release blog

QT5 build errors with arm tool chain (Cross Compiling)

Scheduled Pinned Locked Moved Mobile and Embedded
11 Posts 3 Posters 9.8k 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.
  • S Offline
    S Offline
    srav219
    wrote on last edited by
    #1

    Hi,
    I was trying to configure qt5 with the following options
    "./configure -prefix $(qt_embedded_install_dir) -opensource -openssl -platform linux-g++ -xplatform linux-wr-arm-g++"
    linux-g++ -- is present in ../qtbase/mkspecs
    linux-wr-arm-g++ --- I have created

    I am seeing build errors at compilaton of src/tools code (i.e uic,moc)

    The build errors are as follows


    g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fno-exceptions -fPIE -DQT_NO_LIBUDEV -DQT_NO_XCB -DQDOC2_COMPAT -DQT_NO_DEBUG -DQT_BOOTSTRAP_LIB -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_SYSTEMLOCALE -DQT_NO_THREAD -DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -DQT_NO_DEPRECATED -DQT_NO_TRANSLATION -DQT_QMAKE_LOCATION="/home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-
    ......
    arm-wrs-linux-gnueabi-armv6jel-glibc_small-ld -Wl,-O1 -o ../../../bin/qdoc .obj/release-shared/atom.o .obj/release-shared/codechunk.o .obj/release-shared/codemarker.o .obj/release-shared/codeparser.o .obj/release-shared/config.o .obj/release-shared/cppcodemarker.o .obj/release-shared/cppcodeparser.o .obj/release-shared/ditaxmlgenerator.o .obj/release-shared/doc.o .obj/release-shared/editdistance.o .obj/release-shared/generator.o .obj/release-shared/helpprojectwriter.o .obj/release-shared/htmlgenerator.o .obj/release-shared/location.o .obj/release-shared/main.o .obj/release-shared/node.o .obj/release-shared/openedlist.o .obj/release-shared/plaincodemarker.o .obj/release-shared/puredocparser.o .obj/release-shared/qdocdatabase.o .obj/release-shared/qdoctagfiles.o .obj/release-shared/qdocindexfiles.o .obj/release-shared/quoter.o .obj/release-shared/separator.o .obj/release-shared/text.o .obj/release-shared/tokenizer.o .obj/release-shared/tree.o .obj/release-shared/yyindent.o .obj/release-shared/qcryptographichash.o .obj/release-shared/qqmljsast.o .obj/release-shared/qqmljsastvisitor.o .obj/release-shared/qqmljsengine_p.o .obj/release-shared/qqmljsgrammar.o .obj/release-shared/qqmljslexer.o .obj/release-shared/qqmljsparser.o .obj/release-shared/jscodemarker.o .obj/release-shared/qmlcodemarker.o .obj/release-shared/qmlcodeparser.o .obj/release-shared/qmlmarkupvisitor.o .obj/release-shared/qmlvisitor.o -L/home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build/qt-everywhere-opensource-src-5.0.0/qtbase/lib -lQt5Bootstrap -lz -lpthread
    arm-wrs-linux-gnueabi-ld: unrecognized option '-Wl,-O1'
    arm-wrs-linux-gnueabi-ld: use the --help option for usage information
    make[7]: *** [../../../bin/qdoc] Error 1
    make[7]: Leaving directory /home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build/qt-everywhere-opensource-src-5.0.0/qtbase/src/tools/qdoc' make[6]: *** [sub-qdoc-make_first] Error 2 make[6]: Leaving directory /home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build/qt-everywhere-opensource-src-5.0.0/qtbase/src/tools'
    make[5]: *** [sub-tools-make_first] Error 2
    make[5]: Leaving directory /home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build/qt-everywhere-opensource-src-5.0.0/qtbase/src' make[4]: *** [sub-src-make_first] Error 2 make[4]: Leaving directory /home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build/qt-everywhere-opensource-src-5.0.0/qtbase'
    make[3]: *** [module-qtbase-make_first] Error 2
    make[3]: Leaving directory /home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build/qt-everywhere-opensource-src-5.0.0' make[2]: *** [qt-embedded.compile] Error 2 make[2]: Leaving directory /home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build'
    make[1]: *** [qt-embedded.buildlogger] Error 2
    make[1]: Leaving directory `/home/psravan/sravan/codebase/qtalpha/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build'
    make: *** [all] Error 2


    I dont know why arm-wrs-linux-gnueabi-armv6jel-glibc_small-ld is used in place of g++ while linking the tools.
    I compared the build with qt 4.7.4 ,g++ is involved in linking the tools code in case of qt 4.7.4
    Can any one help me in this regard

    1 Reply Last reply
    0
    • S Offline
      S Offline
      srav219
      wrote on last edited by
      #2

      The cross toolchain used is as follows
      The code for linux-wr-arm-g++ is as follows


      +MAKEFILE_GENERATOR = UNIX
      +TARGET_PLATFORM = unix
      +TEMPLATE = app
      +CONFIG += qt warn_on release incremental link_prl gdb_dwarf_index
      +QT += core gui
      +QMAKE_INCREMENTAL_STYLE = sublib
      +include(../common/linux.conf)
      +include(../common/gcc-base-unix.conf)
      +include(../common/g++-unix.conf)
      +QMAKE_CC = /home/psravan/sravan/codebase/QT5/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/host-cross/arm-wrs-linux-gnueabi/x86-linux2/arm-wrs-linux-gnueabi-armv6jel-glibc_small-gcc
      +QMAKE_CXX = /home/psravan/sravan/codebase/QT5/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/host-cross/arm-wrs-linux-gnueabi/x86-linux2/arm-wrs-linux-gnueabi-armv6jel-glibc_small-g++
      +QMAKE_LINK = /home/psravan/sravan/codebase/QT5/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/host-cross/arm-wrs-linux-gnueabi/x86-linux2/arm-wrs-linux-gnueabi-armv6jel-glibc_small-g++
      +QMAKE_LINK_SHLIB = /home/psravan/sravan/codebase/QT5/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/host-cross/arm-wrs-linux-gnueabi/x86-linux2/arm-wrs-linux-gnueabi-armv6jel-glibc_small-g++
      +QMAKE_LFLAGS_RPATH =
      +# modifications to linux.conf
      +QMAKE_AR = /home/psravan/sravan/codebase/QT5/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/host-cross/arm-wrs-linux-gnueabi/x86-linux2/arm-wrs-linux-gnueabi-armv6jel-glibc_small-ar cqs
      +QMAKE_OBJCOPY = /home/psravan/sravan/codebase/QT5/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/host-cross/arm-wrs-linux-gnueabi/x86-linux2/arm-wrs-linux-gnueabi-armv6jel-glibc_small-objcopy
      +QMAKE_STRIP = /home/psravan/sravan/codebase/QT5/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/host-cross/arm-wrs-linux-gnueabi/x86-linux2/arm-wrs-linux-gnueabi-armv6jel-glibc_small-strip
      +load(qt_config)


      1 Reply Last reply
      0
      • D Offline
        D Offline
        daliusd
        wrote on last edited by
        #3

        @arm-wrs-linux-gnueabi-ld: unrecognized option ‘-Wl,-O1’@

        It should be -Wl -O1 or something like that. Comma is not right separator for command line arguments.

        1 Reply Last reply
        0
        • S Offline
          S Offline
          srav219
          wrote on last edited by
          #4

          I agree here for tools compilation ,the arm-wrs-linux-gnueabi-ld is wrong one,it should be host compiler option i.e g++(in this case).I dont know why cross compilation option is coming
          if it was g++,then -Wl,O1 would be correct.

          1 Reply Last reply
          0
          • D Offline
            D Offline
            daliusd
            wrote on last edited by
            #5

            Are you sure about that:

            @$ g++ -Wl,-O1 test.cpp
            ld: unknown option: -O1
            collect2: ld returned 1 exit status

            $ g++ -Wl,O1 test.cpp
            ld: file not found: O1
            collect2: ld returned 1 exit status@

            1 Reply Last reply
            0
            • S Offline
              S Offline
              srav219
              wrote on last edited by
              #6

              I compared the build with qt 4.7.4 which was successful.

              the log is

              g++ -m32 -Wl,-O1 -o ../../../bin/uic .obj/release-shared-emb-arm/customwidgetsinfo.o .obj/release-shared-emb-arm/databaseinfo.o .obj/release-shared-emb-arm/driver.o .obj/release-shared-emb-arm/treewalker.o .obj/release-shared-emb-arm/ui4.o .obj/release-shared-emb-arm/validator.o .obj/release-shared-emb-arm/cppextractimages.o .obj/release-shared-emb-arm/cppwritedeclaration.o .obj/release-shared-emb-arm/cppwriteicondata.o .obj/release-shared-emb-arm/cppwriteicondeclaration.o .obj/release-shared-emb-arm/cppwriteiconinitialization.o .obj/release-shared-emb-arm/cppwriteincludes.o .obj/release-shared-emb-arm/cppwriteinitialization.o .obj/release-shared-emb-arm/main.o .obj/release-shared-emb-arm/uic.o -L/home/psravan/sravan/codebase/latestbuild/IPPhone/Generated/Build/platform/groupp-glibc_small-armv6jel-wrlinux_3_0/build/qt-everywhere-opensource-src-4.7.4/src/tools/bootstrap -lbootstrap -lz -lz
              make[4]: Leaving directory

              1 Reply Last reply
              0
              • D Offline
                D Offline
                daliusd
                wrote on last edited by
                #7

                OK. I have looked into "man g++":

                @-Wl,option
                Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas.@

                Now in successful case you are using g++ that passes -O1 to linker and in unsuccessful case you are using linker (*-ld) directly thus it should simply state -O1 (without -Wl). I would look into spec file, configuration or Makefile for this setting.

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  srav219
                  wrote on last edited by
                  #8

                  My query is cross compiler linker is used while building the tools.Is configuration (qtbase/configure) wrong

                  1 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    daliusd
                    wrote on last edited by
                    #9

                    Maybe nobody tried to build for your configuration and that's it. I don't know ;-)

                    1 Reply Last reply
                    0
                    • P Offline
                      P Offline
                      pnoffke
                      wrote on last edited by
                      #10

                      I'm having the same problem. I also tried -device instead of/in addition to -xplatform.

                      And what's even more screwy, when it's building the tools, it's mixing the CFLAGS and LFLAGS between toolchains. For example, my cross compiler doesn't support -m64, so I took that out of my mkspec. But when it's building the tools, it's using my cross-compiler with -m64 (and the build is therefore failing). It's picking up the -m64 from -platform (which is linux-g++-64).

                      Since I'm cross-compiling for x86_64 on an x86_64 machine, I can work around this by using the same value (my custom mkspec) for -platform and -xplatform.

                      Patrick

                      1 Reply Last reply
                      0
                      • P Offline
                        P Offline
                        pnoffke
                        wrote on last edited by
                        #11

                        Take a look at this bug report. Maybe you have some variables set that is confusing the build.

                        https://bugreports.qt-project.org/browse/QTBUG-31030

                        Patrick

                        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