Qt Forum

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

    Update: Forum Guidelines & Code of Conduct

    [SOLVED] Error in cross compilation for ARM OMAP35x development kit

    Mobile and Embedded
    2
    4
    5105
    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.
    • K
      koahnig last edited by

      Hi there,
      I am trying to compile Qt as static library for an OMAP35x development kit.
      The Cross compiler is from CodeSourcery. The cross compilation for a standard hello world program does work.

      I have tried the open source versions of Qt 4.7.2, 4.7.0 and finally 4.4.3. The configure step does work. It uses following command line:
      @./configure -embedded arm -little-endian -xplatform qws/omap3530 -no-qt3support -no-xmlpatterns -no-phonon -no-svg -no-webkit -no-accessibility -no-largefile -no-cups -static -prefix /home/xxx/qt-4.4.3-static-omap@

      In the subsequent make step I am encountering always the same problem (see below).

      @ns/ && make -f Makefile install
      make[2]: Entering directory /home/xxx/QT_4.4.3/src/plugins/decorations' make[2]: Nothing to be done for install'.
      make[2]: Leaving directory /home/xxx/QT_4.4.3/src/plugins/decorations' cd mousedrivers/ && make -f Makefile install make[2]: Entering directory /home/xxx/QT_4.4.3/src/plugins/mousedrivers'
      make[2]: Nothing to be done for install'. make[2]: Leaving directory /home/xxx/QT_4.4.3/src/plugins/mousedrivers'
      cd kbddrivers/ && make -f Makefile install
      make[2]: Entering directory /home/xxx/QT_4.4.3/src/plugins/kbddrivers' make[2]: Nothing to be done for install'.
      make[2]: Leaving directory /home/xxx/QT_4.4.3/src/plugins/kbddrivers' make[1]: Leaving directory /home/xxx/QT_4.4.3/src/plugins'
      cd examples/ && make -f Makefile install
      make[1]: Entering directory /home/xxx/QT_4.4.3/examples' cd desktop/ && make -f Makefile install make[2]: Entering directory /home/xxx/QT_4.4.3/examples/desktop'
      cd screenshot/ && make -f Makefile install
      make[3]: Entering directory /home/xxx/QT_4.4.3/examples/desktop/screenshot' /home/xxx/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-g++ -Wl,-rpath,/home/xxx/qt-4.4.3-static-omap/lib -Wl,-rpath,/home/xxx/qt-4.4.3-static-omap/lib -o screenshot .obj/release-static-emb-arm/main.o .obj/release-static-emb-arm/screenshot.o .obj/release-static-emb-arm/moc_screenshot.o -L/home/xxx/QT_4.4.3/lib -lQtGui -L/home/xxx/QT_4.4.3/lib -lQtNetwork -lQtCore -lm -ldl -lpthread /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcherPrivate::initForcedEngine(QString const&)':
      qfilesystemwatcher.cpp:(.text+0x500): undefined reference to QInotifyFileSystemWatcherEngine::create()' qfilesystemwatcher.cpp:(.text+0x510): undefined reference to QDnotifyFileSystemWatcherEngine::create()'
      /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcherPrivate::createNativeEngine()': qfilesystemwatcher.cpp:(.text+0x524): undefined reference to QInotifyFileSystemWatcherEngine::create()'
      qfilesystemwatcher.cpp:(.text+0x530): undefined reference to QDnotifyFileSystemWatcherEngine::create()' /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcherPrivate::init()':
      qfilesystemwatcher.cpp:(.text+0x740): undefined reference to QInotifyFileSystemWatcherEngine::create()' qfilesystemwatcher.cpp:(.text+0x7a0): undefined reference to QDnotifyFileSystemWatcherEngine::create()'
      /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcher::QFileSystemWatcher(QObject*)': qfilesystemwatcher.cpp:(.text+0xb20): undefined reference to QInotifyFileSystemWatcherEngine::create()'
      qfilesystemwatcher.cpp:(.text+0xb80): undefined reference to QDnotifyFileSystemWatcherEngine::create()' /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcher::QFileSystemWatcher(QObject*)':
      qfilesystemwatcher.cpp:(.text+0xc00): undefined reference to QInotifyFileSystemWatcherEngine::create()' qfilesystemwatcher.cpp:(.text+0xc60): undefined reference to QDnotifyFileSystemWatcherEngine::create()'
      /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcher::QFileSystemWatcher(QStringList const&, QObject*)': qfilesystemwatcher.cpp:(.text+0x4c54): undefined reference to QInotifyFileSystemWatcherEngine::create()'
      qfilesystemwatcher.cpp:(.text+0x4cc0): undefined reference to QDnotifyFileSystemWatcherEngine::create()' /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcher::QFileSystemWatcher(QStringList const&, QObject*)':
      qfilesystemwatcher.cpp:(.text+0x4d44): undefined reference to QInotifyFileSystemWatcherEngine::create()' qfilesystemwatcher.cpp:(.text+0x4db0): undefined reference to QDnotifyFileSystemWatcherEngine::create()'
      collect2: ld returned 1 exit status
      make[3]: *** [screenshot] Error 1
      make[3]: Leaving directory /home/xxx/QT_4.4.3/examples/desktop/screenshot' make[2]: *** [sub-screenshot-install_subtargets-ordered] Error 2 make[2]: Leaving directory /home/xxx/QT_4.4.3/examples/desktop'
      make[1]: *** [sub-desktop-install_subtargets] Error 2
      make[1]: Leaving directory `/home/xxx/QT_4.4.3/examples'
      make: *** [sub-examples-install_subtargets-ordered] Error 2
      xxx@xxx-ThinkPad-T60:~/QT_4.4.3$ @

      The OS on the compiling host is Ubuntu 10.10 32bit.

      Thanks for any hints in advance,
      Hans

      Vote the answer(s) that helped you to solve your issue(s)

      1 Reply Last reply Reply Quote 0
      • J
        jbarron last edited by

        The problem is that the mkspec you are using "qws/omap3530" does not start with "linux-". As a result, the INotify/DNotify file system watcher backends are not getting compiled. Take a look at src/corelib/io/io.pri:

        @
        linux-* {
        SOURCES +=
        io/qfilesystemwatcher_inotify.cpp
        io/qfilesystemwatcher_dnotify.cpp

                HEADERS += \
                        io/qfilesystemwatcher_inotify_p.h \
                        io/qfilesystemwatcher_dnotify_p.h
            }
        

        @

        You can either modify io.pri to ensure those files are compiled or you can rename your mkspec to "linux-omap3530" and then re-configure.

        1 Reply Last reply Reply Quote 0
        • K
          koahnig last edited by

          Thanks for the insight to .pri logic.

          I have managed to compile by ignoring the examples in the make, but a bad feeling remains. Certainly I will give it a shot.

          Vote the answer(s) that helped you to solve your issue(s)

          1 Reply Last reply Reply Quote 0
          • K
            koahnig last edited by

            That did the trick.

            Versions 4.4.3 and 4.7.2 did compile smoothly including the examples and demos.

            Thanks again to jbarron

            Vote the answer(s) that helped you to solve your issue(s)

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