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



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



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



  • 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