Qt 5.2.1支持ICU:所有应用程序都以代码1退出

时间:2014-04-04 09:00:19

标签: linux qt cross-platform embedded-linux icu

我在嵌入式Linux上运行QT 5.2.1应用程序时遇到问题(所有这些应用程序,甚至是最简单的“hello world”,代码为1)。

我使用TI提供的工具链(SDK 6.00.00)为Linux嵌入式设备(TI AM335x)交叉编译QT 5.2.1。我还添加了ICU支持(因为我计划交叉编译QtWebkit,ICU是必需的依赖项)。

所以,我之前构建了ICU(版本52),然后使用以下配置交叉编译QT:

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

(以前构建的ICU库位于/ opt / icu / lib中)。

然后像往常一样使用make && make install编译QT。

然后我在开发机器(Ubuntu 12.04 LTS 32位)上配置了我的QT Creator IDE,用于编译针对新QT版本的应用程序,只是交叉编译,使用TI提供的相同工具链(SDK 6.00.00)。 / p>

一切都很好:我的基于控制台的“hello,world”应用程序已经过编译,然后我可以将它部署到设备上(设置让QT找到自己的库所需的所有请求的环境变量)。

但问题出在

应用程序总是以代码1退出并且不产生输出。

如果我strace我的应用程序,运行strace -o trace.log ./TestConsole,那么它会生成您可以找到here的输出。

换句话说,似乎有人在加载exit_group(1)之后正在调用libicudata.so.52

但是谁在呼唤它?为什么?

请考虑如果我在没有ICU支持的情况下交叉构建QT,那么我可以针对它编译和运行应用程序......所以我认为它与ICU相关......有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题:问题与ICU有关。

我注意到即使在目标平台上执行工具/ opt / icu / bin / icuinfo也会在启动时退出1(您可以找到完整的strace log here)。

新的与ICU相关的问题已经发布here,所以我认为这个问题可以关闭。