将一个简单的Qt程序移植并运行到FriendlyARM嵌入式设备

时间:2014-01-05 09:01:06

标签: c++ linux qt qmake qtgui

如您所知,下载QT的主要来源是   http://qt-project.org/downloads

在Qt 5.0之前,有一个Qt for Embedded Linux的链接,例如:   QT-无处不开源-SRC-4.8.5.tar.gz

我认为它在某种程度上取代了Qtopia。此外,我认为“无处不在”意味着“嵌入式”。 我的假设是否正确?

如果我的假设是正确的,可以使用上面的版本而不是旧的Qtopia吗?

另一个问题是:我将Qtopia配置为静态构建库(使用默认的-shared)然后我构建它并成功安装它。

现在我在主机上有以下默认路径的Qtopia 4.3.5嵌入式ARM软件: /usr/local/Trolltech/QtopiaCore4.3.5embedded-arm

问:为什么/ bin目录中没有设计器程序。

我只有以下二进制文件: moc,qmake,rcc,uic 然后我用QApplication和QLabel类编写了一个典型的hello world Qt:

    #include <QApplication>
    #include <QLabel>

    int main(argc, char* argv[])
    {
       QApplication app(argc, argv);
       QLabel Hello("Hello");
       Hello.show();
       return app.exec();  
    }

我用新安装的qmake编译了这段代码,这完全没问题。 如果二进制文件的名称是qt_hello,我有以下输出:

#file qt_hello

ELF 32位LSB可执行文件,ARM,版本1(SYSV),动态链接(使用共享库),   对于GNU / Linux 2.6.32,未剥离

现在,当我将二进制文件移植到ARM嵌入式设备板(使用闪存盘USB)时, 并运行它,我有以下输出:

#。/ qt_hello 加载共享库时出错:libQtGui.so.4:无法打开共享对象文件:没有这样的文件或目录。

基于错误消息,我想,我应该尝试使用-static选项再次配置Qtopia。我使用了以下内容 命令: ./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 16,3 -nomake examples
-nomake tests -static
几个小时后,该软件已成功配置,构建和安装, 在qmaking我的hello程序之后,不幸的是它链接共享,我有上面的错误 在ARM嵌入式设备上?

我想念一下吗?请详细说明。

仅供参考,Qtopia4.6.3安装在ARM嵌入式设备上

- Saeed Amrollahi Boyouki

1 个答案:

答案 0 :(得分:1)

你似乎在混合两种根本不同的东西:

  • 非常古老的Qtopia

  • 旧4.8.5

根据建议in your other thread,使用5.2.0对此更为适合。话虽如此,让我回答你的问题:

  

如果我的假设是正确的,可以使用上面的版本而不是旧的Qtopia吗?

是的,这是对的。

  

问:为什么/ bin目录中没有设计器程序。

我认为您必须与Qt库分开安装,就像QtCreator一样。

  加载共享库时出现

./ qt_hello错误:libQtGui.so.4:无法打开共享对象文件:没有这样的文件或目录。

这意味着您的嵌入式主板上的嵌入式主板上没有qt gui动态库,默认情况下系统范围内通常安装了Qt。

  几个小时之后,软件配置,构建和安装成功,在qmaking我的hello程序后,不幸的是它链接共享,我在ARM嵌入式设备上有上述错误?我想念一下吗?请详细说明。

我认为您忘记静态链接Qt库。例如,尝试在项目的qmake项目文件中显式指定静态库,如下所示:

LIBS += libQtGui.a # cannot recall the name correctly, but it is easy to check