gpt4 book ai didi

C++/QT/ARM 处理器交叉编译/编程

转载 作者:太空狗 更新时间:2023-10-29 12:04:13 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

8年前关闭。




Improve this question




亲爱的所有 {C++|QT|ARM 处理器} 开发人员

你好

最近,我参与了一个 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 的输出为:

$ unname -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

    赛义德·阿姆罗拉希·博尤基

    最佳答案

    Q. Is it important to host and target computers have the same architecture, I mean both should be 32-bits (x86 or i586/i686) or both should be 64-bits (x86_64)?



    不,你可以有任何变化,虽然我从未见过 32 位主机和 64 位目标。根据我的知识,其他组合应该可以正常工作。

    Q. Is it important to use which version of GCC with Qtopia? another thing is which version of QT/Embedded should be used?



    是的,这很重要。不要混合新旧软件,因为它们不能很好地结合在一起。

    Q. Do I have to use the old versions of QT/Embedded like Qtopia or I can use the newer versions like qt-everywhere-opensource-src-4.8.4?



    不。事实上,不要使用古老的 Qtopia,尝试使用最近的 Qt 版本,比如 Qt 5.2。原因很简单,就是设计缺陷,现在它没有得到维护。

    another problem is about kernel version: is it important Q. Is it important to host and target computers have the same kernel number (x.y.z)?



    不,实际上,它几乎总是不同的。这是因为 Linux 内核种类繁多,被不同的发行版或发行版生成器使用。

    At last, I appreciate you to give a your general but practical guideline/tips to cross-compiling from x86 GCC to FreindlyARM platform.



    如果你想为你的目标自己构建 Qt,你需要注意 -platform-xplatform选项。前者定义您的主机平台,后者定义嵌入式目标平台。

    基本上,您需要使 qmake 以 mkspecs 文件的形式为您的板提供适当的支持。如果没有,在现有的基础上从头开始获得一个相对容易。

    当您为嵌入式板构建软件时,您需要使用 -spec基于 qmake 的项目中的选项来选择正确的目标。

    我还建议将 QtCreator 作为新手考虑一下,您可以在其中正确配置“工具包”,自定义部署步骤等。它有很多内置的跨工具链开发支持。

    关于C++/QT/ARM 处理器交叉编译/编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20919523/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com