PDA

View Full Version : can't build qt examples for arm (OMAP)



yossibs
18th October 2009, 01:11
Hi,

Although similar thread was discussed here long time ago, I didn't find an answer to that.
I built QT4.6 for arm and installed it.
Now when building the examples (using the host) it fails due to a linking issue, see bellow:

arm-none-linux-gnueabi-g++ --sysroot=/media/ext3 -Wl,-rpath-link,/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -Wl,-O1 -Wl,-rpath,/media/ext3/home/quado/qt-4.6/lib -Wl,-rpath,/media/ext3/home/quado/qt-4.6/lib -o 2dpainting .obj/release-shared-emb-arm/glwidget.o .obj/release-shared-emb-arm/helper.o .obj/release-shared-emb-arm/main.o .obj/release-shared-emb-arm/widget.o .obj/release-shared-emb-arm/window.o .obj/release-shared-emb-arm/moc_glwidget.o .obj/release-shared-emb-arm/moc_widget.o .obj/release-shared-emb-arm/moc_window.o -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/ -Lusr/lib -Llib -lQtOpenGL -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/ -Lusr/lib -Llib -lQtGui -lQtNetwork -lQtCore -lpthread
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libsrv_um.so: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `_dl_hwcap'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlsym'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlopen'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlclose'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlerror'
collect2: ld returned 1 exit status
make: *** [2dpainting] Error 1


please note that the glibc warning above happens also during the QT build itself.
the option: "--sysroot=/media/ext3" is the place where the fs is and therefore accessing the libraries from that directory. Actually I am using the target's filesystem directly from a SD card.

any idea?

Thanks

squidge
18th October 2009, 09:02
have you tried adding -ldl ?

yossibs
18th October 2009, 18:47
as you can see bellow, i tried but it didn't help.
any more ideas?

arm-none-linux-gnueabi-g++ --sysroot=/media/ext3 -Wl,-rpath-link,/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -Wl,-O1 -Wl,-rpath,/media/ext3/home/quado/qt-4.6/lib -Wl,-rpath,/media/ext3/home/quado/qt-4.6/lib -o 2dpainting .obj/release-shared-emb-arm/glwidget.o .obj/release-shared-emb-arm/helper.o .obj/release-shared-emb-arm/main.o .obj/release-shared-emb-arm/widget.o .obj/release-shared-emb-arm/window.o .obj/release-shared-emb-arm/moc_glwidget.o .obj/release-shared-emb-arm/moc_widget.o .obj/release-shared-emb-arm/moc_window.o -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/ -Lusr/lib -Llib -lQtOpenGL -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/ -Lusr/lib -Llib -lQtGui -lQtNetwork -lQtCore -lpthread -ldl
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libsrv_um.so: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `_dl_hwcap'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlsym'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlopen'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlclose'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlerror'
collect2: ld returned 1 exit status
make: *** [2dpainting] Error 1

yossibs
18th October 2009, 19:40
However, if i am mentioning -ldl before -lQtCore then the glibc warning dissapears.
But still i have no idea why i have those error messages.

Please help.

arm-none-linux-gnueabi-g++ --sysroot=/media/ext3 -Wl,-rpath-link,/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -Wl,-O1 -Wl,-rpath,/media/ext3/home/quado/qt-4.6/lib -Wl,-rpath,/media/ext3/home/quado/qt-4.6/lib -o 2dpainting .obj/release-shared-emb-arm/glwidget.o .obj/release-shared-emb-arm/helper.o .obj/release-shared-emb-arm/main.o .obj/release-shared-emb-arm/widget.o .obj/release-shared-emb-arm/window.o .obj/release-shared-emb-arm/moc_glwidget.o .obj/release-shared-emb-arm/moc_widget.o .obj/release-shared-emb-arm/moc_window.o -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/ -Lusr/lib -Llib -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib -L/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/ -Lusr/lib -Llib -lQtGui -lQtNetwork -lQtOpenGL -lpthread -ldl -lQtCore
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `_dl_hwcap'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlsym'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlopen'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlclose'
/home/quado/quado-distros/beagleboard/qt-ti/ti/lib/libQtCore.so: undefined reference to `__dlerror'
collect2: ld returned 1 exit status
make: *** [2dpainting] Error 1

aj2903
23rd October 2009, 14:33
what toolchain are you using for compiling qt?

yossibs
24th October 2009, 23:40
I am using CodeSourcery.
In fact I managed to solve this out.

The problems was with the compilation of libQtCore.so

When going over the long log I found that it had a problem with the libdl.so library (it was a symbolic link that pointed to an absolute path within the host!!!)

Thanks.