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