linux - 具有 ICU 支持的 Qt 5.2.1 : all applications exit with code 1

标签 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) 提供的相同工具链。

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

但问题来了:

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

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

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

但是是谁在调用它呢?为什么?

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

最佳答案

我发现了问题:问题是ICU相关的。

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

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

关于linux - 具有 ICU 支持的 Qt 5.2.1 : all applications exit with code 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22858103/

相关文章:

c++ - Qt Gridlayout 不重新对齐 GUI 元素

asp.net-mvc - Mobile MVC - native 移动应用程序 View

c++ - 移植到不同架构的潜在问题

c++ - 使用代理向 Qt SQL 模型添加虚拟列

mysql - 在 .htacces magento 上将 non.www 的规则重写为 https 到 www.https

c++ - Linux 上没有控制台应用程序

c++ - 在 C++ 文件上的 Windows 环境中运行类似命令 "./a.out <data.txt"的 unix

C++/Qt : how to access windows registry remotely?

c++ - C++中枚举环境变量(跨平台)

linux - ImageMagick V7 和裁剪工具