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


  • Moderators

    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 forinstall'.
    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 forinstall'.
    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 functionQFileSystemWatcherPrivate::initForcedEngine(QString const&)':
    qfilesystemwatcher.cpp:(.text+0x500): undefined reference to QInotifyFileSystemWatcherEngine::create()' qfilesystemwatcher.cpp:(.text+0x510): undefined reference toQDnotifyFileSystemWatcherEngine::create()'
    /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcherPrivate::createNativeEngine()': qfilesystemwatcher.cpp:(.text+0x524): undefined reference toQInotifyFileSystemWatcherEngine::create()'
    qfilesystemwatcher.cpp:(.text+0x530): undefined reference to QDnotifyFileSystemWatcherEngine::create()' /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In functionQFileSystemWatcherPrivate::init()':
    qfilesystemwatcher.cpp:(.text+0x740): undefined reference to QInotifyFileSystemWatcherEngine::create()' qfilesystemwatcher.cpp:(.text+0x7a0): undefined reference toQDnotifyFileSystemWatcherEngine::create()'
    /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In function QFileSystemWatcher::QFileSystemWatcher(QObject*)': qfilesystemwatcher.cpp:(.text+0xb20): undefined reference toQInotifyFileSystemWatcherEngine::create()'
    qfilesystemwatcher.cpp:(.text+0xb80): undefined reference to QDnotifyFileSystemWatcherEngine::create()' /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In functionQFileSystemWatcher::QFileSystemWatcher(QObject*)':
    qfilesystemwatcher.cpp:(.text+0xc00): undefined reference to QInotifyFileSystemWatcherEngine::create()' qfilesystemwatcher.cpp:(.text+0xc60): undefined reference toQDnotifyFileSystemWatcherEngine::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 toQInotifyFileSystemWatcherEngine::create()'
    qfilesystemwatcher.cpp:(.text+0x4cc0): undefined reference to QDnotifyFileSystemWatcherEngine::create()' /home/xxx/QT_4.4.3/lib/libQtCore.a(qfilesystemwatcher.o): In functionQFileSystemWatcher::QFileSystemWatcher(QStringList const&, QObject*)':
    qfilesystemwatcher.cpp:(.text+0x4d44): undefined reference to QInotifyFileSystemWatcherEngine::create()' qfilesystemwatcher.cpp:(.text+0x4db0): undefined reference toQDnotifyFileSystemWatcherEngine::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



  • 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.


  • Moderators

    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.


  • Moderators

    That did the trick.

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

    Thanks again to jbarron


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.