Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Call for Presentations - Qt World Summit

    Solved Qt Cross Compile - some binaries are not cross compiled

    General and Desktop
    cross compile armhf cubieboard qmake
    2
    3
    2111
    Loading More Posts
    • 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.
    • MartinCZ
      MartinCZ last edited by A Former User

      Hello, I have a problem with cross compilation. I have some older release of QT (5.5.1) which I'm trying to cross compile. Here is the command which I use for configure:

      /home/lord/Development/SMON3/smon-base/build/qt/qtbase/configure -no-opengl -no-gui -no-xinput2 -no-xinput2 -no-glib -no-pulseaudio -no-alsa -no-gtkstyle -no-widgets -no-tslib -no-nis -no-cups -no-iconv -no-evdev -no-icu -no-xcb -no-eglf
      s -no-kms -no-directfb -no-linuxfb -no-libinput -no-gstreamer -system-proxies -device linux-cubieboard2-g++ -device-option CROSS_COMPILE=/home/lord/Development/SMON3/smon-base/compilator/bin/arm-linux-gnueabihf- -sysroot /home/lord/Devel
      opment/SMON3/smon-base/stage/filesystem -opensource -confirm-license -optimized-qmake -release -make libs -prefix /opt/qt-cubieboard2 -no-pch -nomake examples -nomake tests -no-xcb -skip webkit -skip qtquick1 "$@"
      

      I specified there CROSS_COMPILATOR and --sysroot. After a few minutes it finish without errors with following info in config.summary

        Configure summary
      
      Building on:   linux-g++ (x86_64, CPU features: mmx sse sse2)
      Building for:  devices/linux-cubieboard2-g++ (arm, CPU features: neon)
      Platform notes:
      
                  - Also available for Linux: linux-clang linux-kcc linux-icc linux-cxx
      
      qmake vars .......... styles += mac fusion windows DEFINES += QT_NO_MTDEV DEFINES += QT_NO_LIBUDEV DEFINES += QT_NO_EVDEV DEFINES += QT_NO_TSLIB DEFINES += QT_NO_LIBINPUT sql-drivers =  sql-plugins =  sqlite qmake switches .........
      

      Up to now I think that everything is OK, I'm building on x86_64 architecture for ARM architecture.

      Make && make install finish also OK, it creates a lot of libraries and some binaries. Then I check binaries in target location (/opt/qt-cubieboard2/bin) and some of them are not compiled for ARM architecture.

      file *
      lconvert:             ELF 64-bit LSB executable, x86-64, version 
      lrelease:             ELF 64-bit LSB executable, x86-64, version 
      lupdate:              ELF 64-bit LSB executable, x86-64, version
      moc:                  ELF 64-bit LSB executable, x86-64, version 
      qdbus:                ELF 32-bit LSB executable, ARM, EABI5 version 
      qdbuscpp2xml:         ELF 64-bit LSB executable, x86-64, version 
      qdbusxml2cpp:         ELF 64-bit LSB executable, x86-64, version 
      qdoc:                 ELF 64-bit LSB executable, x86-64, version 
      qlalr:                ELF 64-bit LSB executable, x86-64, version 
      qmake:                ELF 64-bit LSB executable, x86-64, version 
      qml:                  ELF 32-bit LSB executable, ARM, EABI5 version 
      qmlimportscanner:     ELF 64-bit LSB executable, x86-64, version 
      qmllint:              ELF 64-bit LSB executable, x86-64, version 
      qmlmin:               ELF 64-bit LSB executable, x86-64, version 
      qtpaths:              ELF 32-bit LSB executable, ARM, EABI5 version 
      qtplugininfo:         ELF 32-bit LSB executable, ARM, EABI5 version 
      rcc:                  ELF 64-bit LSB executable, x86-64, version 
      syncqt.pl:            Perl script, ASCII text executable
      xmlpatterns:          ELF 32-bit LSB executable, ARM, EABI5 version 
      xmlpatternsvalidator: ELF 32-bit LSB executable, ARM, EABI5 version 
      

      Main problem which I can see there is that qmake is not compiled for ARM. I need qmake to compile some Qt project for ARM. Am I doing something wrong ?

      1 Reply Last reply Reply Quote 0
      • micland
        micland last edited by

        AFAIK when cross compiling Qt only the libraries and runtime tools are compiled and linked for the target so you can run Qt applications on the target. The builidng tools (e.g. qmake) are compiled for the host system so you have to cross compile your Qt apllications, too.
        To get qmake running on the target you have to compile Qt on the target (which may take several hours or days, depending on the target...).

        MartinCZ 1 Reply Last reply Reply Quote 0
        • MartinCZ
          MartinCZ @micland last edited by

          @micland Yes, you are right. I was somehow lost. I needed to have qmake compiled for x86_64, but what confused me was that this binary was mixed together with other (ARM) binaries.

          Just to know. After config stage, it is possible to change CC variable in Makefile and get cross compiled qmake in a few minutes. Thank you and Regards !

          1 Reply Last reply Reply Quote 0
          • First post
            Last post