I have a problem running QT 5.2.1 applications on linux embedded (all of them, even the simplest "hello world" exits with code 1).
I cross compiled QT 5.2.1 for a linux embedded device (TI AM335x) using the toolchain supplied by TI (SDK 6.00.00). I also added ICU support (because I am planning to cross-compile QtWebkit too and ICU is a required dependency).
So, I previously built ICU (version 52) and then I cross-compiled QT using the following configuration:
./configure -prefix /opt/qt5 -opensource -confirm-license -platform linux-g++
-icu -I /opt/icu/include -L /opt/icu/lib -R /opt/icu/lib -no-cups -no-nis
-no-dbus -no-pch -no-accessibility -no-gtkstyle -no-xcb -eglfs -no-directfb
-qpa eglfs-xplatform linux-arm-gnueabihf-g++ -opengl es2 -nomake examples
-nomake tests -v
(previously built ICU libraries reside in /opt/icu/lib).
QT was then compiled using make && make install
, as usual.
Then I configured my QT Creator IDE on development machine (Ubuntu 12.04 LTS 32-bit) for compiling applications against the new QT version, just cross-compiled, using the same toolchain provided by TI (SDK 6.00.00).
Everything is fine: my console-based "hello, world" application is compiled and then I am able to deploy it to the device (setting all the requested environment variables required for letting QT find its own libraries).
BUT here comes the problem:
the application always exits with code 1 and produces no output.
If I strace
my application, running strace -o trace.log ./TestConsole
then it produces the output that you can find here.
In other words it seems that somebody is calling exit_group(1)
just after having loaded libicudata.so.52
.
But who is calling it? and why?
Please consider that if I cross-build QT without ICU support, then I can compile and run applications against it... So I think it is something ICU-related... Any ideas about that?