前几年工作中就涉及到交叉编译Qt的内容,当然是别的同事已经搭建好了交叉编译,自己只需编译业务逻辑就可以了。当时Qt版本是5.5.1,自己觉得版本有点低了,比如说升级到Qt5.9,自己就琢磨着动手试试,因为知道网上资料也特别多。老话说得好,万事开头难,不无道理啊。
网上查了很多资料,其中不乏写得很详细的,可是第一步我就犯了难。因为我看了几篇资料,他们下载的交叉编译工具链有不一样的,我还听说,有的板子,厂商就提供了交叉编译工具链,我的板子型号和网上文章中提的Arm板型号也不一样,我到底下载哪个好呢,这一步就卡壳了。
说起来惭愧,网上资料那么多,写的字都认识,就因为别人的Arm板型号和我不一样,我就进行不下去了。最近周末在家,我参照着网上的资料,感觉也没特别费劲,就搭建好了交叉编译环境。也没人指点我,资料还是网上那些资料,咋突然就开窍了,我终于理解了前人所说的,某个知识点不会,好多时候,你不是某个孤立的知识点卡住了,是该知识点涉及到的整个知识流程,体系你不清楚,你自己都没搞明白你真正不懂的是什么,所以说网上资料是一大堆,你都不知道要怎么搜索,怎么查。
回到交叉编译这个问题上,现在明白了只要根据自己需求灵活处理即可,比如说我只是想升级Qt的版本,而且前人已经有了交叉编译工具链,我只需到网上下载Qt5.9的源码,根据自己的需要配置好qmake.conf即可,把生成的lib库,配置好路径,你的应用程序能找到即可,这里不会的可以去网上搜。
那如果是你觉得交叉编译工具链版本低了,比如说你想从gcc4.x升级到gcc7.x,这个也好办,你查清楚当前的交叉编译工具链版本信息。网上搜寻了交叉编译工具链大概3个常见版本,一个是arm-none-eabi-gcc,这个是用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application),另一个是arm-none-linux-gnueabi-gcc:主要用于基于ARM架构的Linux系统,可用于编译ARM架构的u-boot、Linux内核、linux应用等。它基于GCC,使用Glibc库,经过Codesourcery公司优化过推出的编译器;还有一个是 arm-linux-gnueabi与arm-linux-gnueabihf:这两个编译器都用于编译针对Linux系统的ARM架构代码,但它们在浮点运算单元(FPU)和硬件浮点模式上有区别。arm-linux-gnueabi使用softfp模式,而arm-linux-gnueabihf使用hard模式。这种区别影响了编译代码的性能和兼容性,特别是在进行浮点运算时。我的Arm板当前用的是arm-linux-gnueabihf,继续下载linaro的这个系列高级版本即可,后面就是配置好这个交叉编译工具路径,再次编译自己想要的Qt版本即可。Just so easy!
写这篇文章,也不是记录如何构建交叉编译环境,网上一大堆资料,我写得也不能超过他们。我想说得是,遇到问题了,如果你能知道如何去搜索,并解决问题,这个标明你知道了涉及该问题的整个知识体系架构;如果你不知道从何下手,往往是该知识的上下文你都不清楚,就算别人指点你,把问题解决了,你也没法灵活运用,理解,形成自己的知识体系。从我自己的例子来说,我就是通过长期坚持阅读各种书籍,技术的,管理的,通信交互各方的大概流程也要了解,短期看起来没什么变化,两年之后,发现不少之前困扰自己的问题,咋也没有特别针对寻找答案,既然自己解决了。
Qt交叉编译
最新推荐文章于 2024-09-02 23:19:31 发布