运行交叉编译的qt应用程序

时间:2010-12-28 00:29:40

标签: qt unicode character-encoding cross-compiling iconv

我已经使用cmake和openembedded进行了交叉编译的qt app 1。它是从i686到geode的交叉编译,所以我想我应该可以在我编译它的i686主机上运行它,如果我链接到geode库。从图像中可以看出,它运行不正常。使用strace似乎表明qt正在为一切使用一些有趣的编码,例如:

stat64("\342\274\200\347\200\200\347\210\200\346\274\200\346\214\200", 0x869566c) = -1 ENOENT (No such file or directory)

有什么想法吗?

谢谢, Jayen

qt app

2 个答案:

答案 0 :(得分:1)

当您进行交叉编译时,这意味着您创建的二进制文件将在与您编译它的体系结构不同的体系结构上运行。在你的情况下,这意味着你已经使用你的i686机器来构建一个应该在geode架构上运行的二进制文件。您的应用程序正在您的计算机上找到Qt库,这就是它运行的原因。但是,当Qt构建你的应用程序时,它会将一些代码转换为geode特定的,因此它并非“真正”正常工作。

如果您使用非Qt应用尝试此操作,则在尝试运行此操作时会出现错误。

要测试您的交叉编译应用程序,您必须在支持geode arch的Qemu中运行它。 OpenEmebedded通常提供Qemu目标。检查geode的可用目标,Qemu应该有一个。完成后,您可以将应用程序包含在生成的Qemu图像中,或者将其自身复制到Qemu图像中,然后运行它。

答案 1 :(得分:0)

问题结果是当我编译qt时,因为我已经编译了libiconv,qt正在使用它,而不是gconv(glibc中的iconv)。当我去运行它时,它使用的是交叉编译的libiconv,所以我仍然不确定它为什么不起作用。

擦除我的交叉编译干净,编译没有libiconv的qt工作得很好。

我已经设法让它在x86_64主机上运行。