【发布时间】:2014-01-04 10:05:19
【问题描述】:
尊敬的所有 {C++|QT|ARM Processors} 开发人员
你好
最近,我参与了一个 QT/ARM 处理器软件开发项目。 该项目的一般组成部分是:
Processor: Mini440 FriendlyARM (400 MHz Samsung S3C2440 ARM926T),
www.friendlyarm.net
www.arm9.net
OS: Linux (Kernel version 2.6.32)
Programming Language: C++ (GCC/g++)
GUI Framework: QT
该项目的主要目的是为 嵌入式手持设备,使用 QT/Embedded Linux。
主机(开发机)上命令 uname -a 的输出为:
$ uname -a
Linux scorpion 3.5.0-39-generic #60~precise1-Ubuntu SMP Wed Aug 14 15:38:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
在嵌入式 ARM 设备上命令 uname -a 的输出是:
Liunx FriendlyARM 2.6.32-FriendlyARM #5 Wed Jun 6 15:50:50 HKT 2012 armv4tl 未知。
我的第一个问题是:
问。主机和目标计算机具有相同的架构是否重要, 我的意思是两者都应该是 32 位(x86 或 i586/i686)还是都应该是 64 位(x86_64)?
我做了以下步骤:
我使用基于 QT Designer (5.0.2) 的 QT Creator (2.7.0) 编写了一个简单的 GUI 在桌面 Linux 机器(主机)上
-
根据知识,在过去两个月里,我从书籍和互联网上获得了关于交叉编译、工具链和其他许多相关概念的知识,我发现我必须安装另一个来自奇趣科技的软件,叫做 Qtopia,它的嵌入式版本QT。我尝试 安装最新版本的 Qtopia,名为 qtopia-core-opensource-src-4.3.5 在这一点上,我在配置、构建和制作方面遇到了很多问题 软件。一个问题是主机上的 g++ 是 4.8.1(非常新),但是 Qtopia 大约是7年前。当我尝试从源代码构建 Qtopia g++ 编译器会发出几个 C++ 错误,例如:
错误:“ptrdiff_t”没有命名类型 错误:未在此范围内声明“附加”,也没有声明,在哪里找到 通过参数依赖查找
当然,我解决了这些问题,但很明显 g++ 会出现这些错误 因为Qtopia是用C++98写的,但是g++ 4.8.1是基于C++11的 我的问题是:
问。 Qtopia 使用哪个版本的 GCC 重要吗? 另一件事是应该使用哪个版本的 QT/Embedded?
问。我是否必须使用 QT/Embedded 的旧版本,如 Qtopia 或 我可以使用较新的版本,例如 qt-everywhere-opensource-src-4.8.4?
另一个问题是内核版本:重要吗 问:主机和目标计算机具有相同的内核编号 (x.y.z) 是否重要?
如您所见,我迷失了交叉编译和移植书面软件的细节 从主机到嵌入式设备。我使用QT和写C++几乎没有问题 在桌面版本中。 最后,感谢您提供一般但实用的指南/提示 从 x86 GCC 交叉编译到 FreindlyARM 平台。
请多指教
TIA
Saeed Amrollahi Boyouki
【问题讨论】:
-
主机和目标不需要有任何共同点——重要的是交叉编译器工具链被配置为在主机上运行并为目标生成代码。我对你的 Qtopia 问题一无所知。我做了一点 Qt 编程(虽然不是任何面向 GUI 的东西),但从未有意处理过 Qtopia。