Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. QtonPi
  4. Cross Compilation errors
QtWS25 Last Chance

Cross Compilation errors

Scheduled Pinned Locked Moved QtonPi
14 Posts 6 Posters 16.1k Views
  • 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
    NateM
    wrote on last edited by
    #4

    Any help on fixing this? If any more info is needed I can provide it.

    Thanks!

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

      I have been working on compiling it again and using the following configure command:

      @ ./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -reduce-relocations -reduce-exports -release -make libs -prefix /usr/local/qt5pi
      @

      When I run make I seethe following error:

      @compiler/qv4isel_masm_p.h: In member function ‘void QQmlJS::MASM::Assembler::storeUInt32(JSC::AbstractMacroAssemblerJSC::ARMAssembler::RegisterID, QQmlJS::MASM::Assembler::Pointer)’:
      compiler/qv4isel_masm_p.h:1210:63: error: ‘convertUInt32ToDouble’ was not declared in this scope
      compiler/qv4isel_masm_p.h: In member function ‘void QQmlJS::MASM::InstructionSelection::convertUIntToDouble(QQmlJS::V4IR::Temp*, QQmlJS::V4IR::Temp*)’:
      compiler/qv4isel_masm_p.h:1489:18: error: ‘class QQmlJS::MASM::Assembler’ has no member named ‘convertUInt32ToDouble’
      compiler/qv4isel_masm_p.h:1491:18: error: ‘class QQmlJS::MASM::Assembler’ has no member named ‘convertUInt32ToDouble’
      compiler/qv4isel_masm.cpp: In member function ‘virtual void QQmlJS::MASM::InstructionSelection::visitRet(QQmlJS::V4IR::Ret*)’:
      compiler/qv4isel_masm.cpp:1905:22: error: ‘class QQmlJS::MASM::Assembler’ has no member named ‘convertUInt32ToDouble’
      compiler/qv4isel_masm.cpp: In member function ‘JSC::AbstractMacroAssemblerJSC::ARMAssembler::Jump QQmlJS::MASM::InstructionSelection::genTryDoubleConversion(QQmlJS::V4IR::Expr*, JSC::MacroAssemblerARM::FPRegisterID)’:
      compiler/qv4isel_masm.cpp:2099:14: error: ‘class QQmlJS::MASM::Assembler’ has no member named ‘convertUInt32ToDouble’
      make[3]: *** [.obj/release-shared/qv4isel_masm.o] Error 1
      make[3]: *** Waiting for unfinished jobs....
      make[3]: Leaving directory /home/nathan/opt/qt5/qtdeclarative/src/qml' make[2]: *** [sub-qml-make_first-ordered] Error 2 make[2]: Leaving directory /home/nathan/opt/qt5/qtdeclarative/src'
      make[1]: *** [sub-src-make_first] Error 2
      make[1]: Leaving directory `/home/nathan/opt/qt5/qtdeclarative'
      make: *** [module-qtdeclarative-make_first] Error 2
      @

      Any thoughts?

      1 Reply Last reply
      0
      • N Offline
        N Offline
        NateM
        wrote on last edited by
        #6

        Looks like it was a bug. A patch for this bug is currently available here and I hope will be pushed out soon. I was able to get qtdeclarative to compile after performing the changes.

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

        1 Reply Last reply
        0
        • P Offline
          P Offline
          psyhotron
          wrote on last edited by
          #7

          Hello, For the past few days I was trying to cross-compile QT for Raspberry PI on Lion Osx using helpful script called "trismer-bakeqtpi-osx" all dependencies are automatically being downloaded together with latest QT5.2.1 tree ... then the configuration options are as follows:

          sudo ./configure -opengl es2 -qt-libpng -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/arm-linux-gnueabihf-osx/bin/arm-linux-gnueabihf- -sysroot ~/opt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -release -make libs -prefix /usr/local/qt5pi -hostprefix ~/opt/qt5pi -no-pch

          but make -j 4 results with an errors:

          ../../../../mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp: In function ‘void moveDispmanxLayer(EGLNativeWindowType, const QPoint&)’:
          ../../../../mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp:125:66: error: cannot convert ‘DISPMANX_TRANSFORM_T’ to ‘VC_IMAGE_TRANSFORM_T’ for argument ‘9’ to ‘int vc_dispmanx_element_change_attributes(DISPMANX_UPDATE_HANDLE_T, DISPMANX_ELEMENT_HANDLE_T, uint32_t, int32_t, uint8_t, const VC_RECT_T*, const VC_RECT_T*, DISPMANX_RESOURCE_HANDLE_T, VC_IMAGE_TRANSFORM_T)’
          ../../../../mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp: At global scope:
          ../../../../mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp:189:10: warning: unused parameter ‘window’ [-Wunused-parameter]
          make[4]: *** [.obj/qeglfshooks_pi.o] Error 1
          make[3]: *** [sub-eglfs-make_first] Error 2
          make[2]: *** [sub-platforms-make_first] Error 2
          make[1]: *** [sub-plugins-make_first] Error 2
          make: *** [sub-src-make_first] Error 2

          1 Reply Last reply
          0
          • N Offline
            N Offline
            naniqingkuang
            wrote on last edited by
            #8

            I have tried some time,it seems to zhe same problem with you

            ../../../../mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp: In function ‘void moveDispmanxLayer(EGLNativeWindowType, const QPoint&)’:
            ../../../../mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp:125:66: error: cannot convert ‘DISPMANX_TRANSFORM_T’ to ‘VC_IMAGE_TRANSFORM_T’ for argument ‘9’ to ‘int vc_dispmanx_element_change_attributes(DISPMANX_UPDATE_HANDLE_T, DISPMANX_ELEMENT_HANDLE_T, uint32_t, int32_t, uint8_t, const VC_RECT_T*, const VC_RECT_T*, DISPMANX_RESOURCE_HANDLE_T, VC_IMAGE_TRANSFORM_T)’
            ../../../../mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp: At global scope:
            ../../../../mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp:99:13: warning: ‘void moveDispmanxLayer(EGLNativeWindowType, const QPoint&)’ defined but not used [-Wunused-function]
            make[4]: *** [.obj/qeglfshooks_pi.o] 错误 1
            make[4]: Leaving directory /home/zhuzhu/opt/qt5/qtbase/src/plugins/platforms/eglfs' make[3]: *** [sub-eglfs-make_first] 错误 2 make[3]: Leaving directory /home/zhuzhu/opt/qt5/qtbase/src/plugins/platforms'
            make[2]: *** [sub-platforms-make_first] 错误 2
            make[2]: Leaving directory /home/zhuzhu/opt/qt5/qtbase/src/plugins' make[1]: *** [sub-plugins-make_first] 错误 2 make[1]: Leaving directory /home/zhuzhu/opt/qt5/qtbase/src'
            make: *** [sub-src-make_first] 错误 2

            1 Reply Last reply
            0
            • P Offline
              P Offline
              psyhotron
              wrote on last edited by
              #9

              Ok Solution:
              type in root$ sudo find ~/opt -type f -exec grep -H 'vc_dispmanx_element_change_attributes' {} ;
              Password: your_root_password
              then it should find 2 locations
              /Users/your_user_name/opt/qt5/qtbase/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp
              and
              /Users/your_user_name/opt/rasp-pi-rootfs/opt/vc/include/interface/vmcs_host/vc_dispmanx.h
              First edit prototype of function in vc_dispmanx.h from:

              VCHPRE_ int VCHPOST_ vc_dispmanx_element_change_attributes( DISPMANX_UPDATE_HANDLE_T update,
              DISPMANX_ELEMENT_HANDLE_T element,
              uint32_t change_flags,
              int32_t layer,
              uint8_t opacity,
              const VC_RECT_T *dest_rect,
              const VC_RECT_T *src_rect,
              DISPMANX_RESOURCE_HANDLE_T mask,
              VC_IMAGE_TRANSFORM_T transform );

              To:

              VCHPRE_ int VCHPOST_ vc_dispmanx_element_change_attributes( DISPMANX_UPDATE_HANDLE_T update,
              DISPMANX_ELEMENT_HANDLE_T element,
              uint32_t change_flags,
              int32_t layer,
              uint8_t opacity,
              const VC_RECT_T *dest_rect,
              const VC_RECT_T *src_rect,
              DISPMANX_RESOURCE_HANDLE_T mask,
              DISPMANX_TRANSFORM_T transform );

              Then Edit

              /Users/your_user_name/opt/qt5/qtbase/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp

              go to function moveDispmanxLayer and make sure it looks like this:

              static void moveDispmanxLayer(EGLNativeWindowType window, const QPoint &pos)
              {
              EGL_DISPMANX_WINDOW_T *eglWindow = static_cast<EGL_DISPMANX_WINDOW_T *>(window);
              QSize size(eglWindow->width, eglWindow->height);

              VC_RECT_T dst_rect;
              dst_rect.x = pos.x();
              dst_rect.y = pos.y();
              dst_rect.width = size.width();
              dst_rect.height = size.height();
              
              VC_RECT_T src_rect;
              src_rect.x = 0;
              src_rect.y = 0;
              src_rect.width = size.width() << 16;
              src_rect.height = size.height() << 16;
              
              DISPMANX_UPDATE_HANDLE_T dispman_update = vc_dispmanx_update_start(0);
              vc_dispmanx_element_change_attributes(dispman_update,
                                                    eglWindow->element,
                                                    ELEMENT_CHANGE_DEST_RECT /*change_flags*/,
                                                    0,
                                                    0,
                                                    &dst_rect,
                                                    NULL,
                                                    0,
                                                    (DISPMANX_TRANSFORM_T)0);
              
              vc_dispmanx_update_submit_sync(dispman_update);
              

              }

              Then recompile

              Setup your QT creator to be pointing back into new cross compiler and debuggers as per QT tutorial

              After all this I was able to successfully compile Hello World project ...

              Now I am struggling to deploy this project to run on the Raspberry PI because it says :

              bash: /home/pi/helloworld/helloworld: No such file or directory
              Application finished with exit code 127.

              Is Qt Creator equipped in more verbose console to see what is the problem and why the application is not deployed after successful compilation ?

              1 Reply Last reply
              0
              • C Offline
                C Offline
                CharlesKW
                wrote on last edited by
                #10

                If you don't need support for XCB (ie you will be using QtQuick on the Pi and not Widgets) trying configuring Qt with -no-xcb. If you don't plan on using QtQuick or OpenGL, configure Qt with -no-opengl XCB and OpenGL not compatable on the Raspberry Pi as of now. Here is a link to the official bug report/fix:
                https://bugreports.qt-project.org/browse/QTBUG-36551

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

                  Thanks Charles for your reply but i have posted solution in my last post above ... the only other problem after successful cross compilation is deployment of the app. Please look towards the end of my post ...

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    psyhotron
                    wrote on last edited by
                    #12

                    this is default hello world example *.pro file:

                    TEMPLATE = app

                    target.path = /home/pi/helloworld
                    TARGET = helloworld
                    INSTALLS += target

                    DEPENDPATH += .
                    INCLUDEPATH += .

                    QT += quick

                    SOURCES += main.cpp
                    INCLUDEPATH += /mnt/rasp-pi-rootfs/usr/local/qt5pi/include/
                    qml_folder.source = qml
                    DEPLOYMENTFOLDERS = qml_folder

                    OTHER_FILES +=
                    qml/*

                    for(deploymentfolder, DEPLOYMENTFOLDERS) {
                    item = item$${deploymentfolder}
                    itemsources = $${item}.sources
                    $$itemsources = $$eval($${deploymentfolder}.source)
                    itempath = $${item}.path
                    $$itempath= $$eval($${deploymentfolder}.target)
                    export($$itemsources)
                    export($$itempath)
                    DEPLOYMENT += $$item
                    }

                    installPrefix = /home/pi/$${TARGET}

                    for(deploymentfolder, DEPLOYMENTFOLDERS) {
                    item = item$${deploymentfolder}
                    itemfiles = $${item}.files
                    $$itemfiles = $$eval($${deploymentfolder}.source)
                    itempath = $${item}.path
                    $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
                    export($$itemfiles)
                    export($$itempath)
                    INSTALLS += $$item
                    }

                    when I press run it has the following settings:
                    Kit: Raspberry Pi
                    Deploy to remote linux host
                    Run hello world on remote device

                    When Raspberry is not present on the network (192.168.1.144) Qt says: "Application failed to start: Timeout waiting for reply from server.

                    But when its present on the network:
                    "bash: /home/pi/helloworld/helloworld: No such file or directory
                    Application finished with exit code 127."

                    After compilation of cross-compiler takes place do I need to then deploy cross compiler to Raspberry or write any changes to it? I do run Raspbian on it that came together with NOOBS flashcard ... I thought the whole point of compiling on the PC side it that PC can produce an app and then this app can be pushed over to Raspberry and work on it in its native environment without any hassle. But it seams I am still missing something.

                    1 Reply Last reply
                    0
                    • P Offline
                      P Offline
                      psyhotron
                      wrote on last edited by
                      #13

                      well I can ssh to my Pi on the following address 192.168.1.144 and when I setup remote host (Pi) in the Qt settings there's a test button that you can press to check comms and this is all ok ... maybe it is something to do with folder permissions ... I just don't know yet as Qt is not very verbose ... it just says there's no such a folder or directory ... I don't believe that it is transferring anything across

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        micha123
                        wrote on last edited by
                        #14

                        Hi psyhotron,

                        I walk the same waylike you, changed the DISPMANX and then the ./ configure works; i can make and make install.

                        After I setup QT creator and oben the example helloworld I can not correct build it because of message "missing module(s) in QT: quick

                        What's happend? Any ideas?

                        Micha.

                        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