移植Qt到IMX6ULL开发板

说明

  1. 本移植过程适用于韦东山 100ask_imx6ull_pro 的板子(这个板子上的 tslib 等已经移植好了),其他开发板可能需要配置更多的内容
  2. 本移植过程是基于 Buildroot 系统系统,还有其他方式可以移植 Qt

环境设备

  • 交叉编译器:arm-linux-gnueabihf-gcc
  • 编译平台:unbutu20.04
  • ARM 开发板:100ask_imx6ull_pro

Qt 交叉编译

  1. 配置交叉编译工具链
  2. 进入 Buildroot_2020.02.x 文件夹(这个文件夹是最开始配置 ubuntu 环境时从韦东山的仓库中下载的)
  3. 执行 make clean
  4. 执行 make 100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig
  5. 执行 make all -j4

注意这个过程会持续很长时间,中间也会出现很多错误,但不需要等到全部编译完,只需要在该文件夹下的 ./output/host/bin/ 文件夹下出现 qmake 工具即可

错误 1:

In file included from /usr/include/signal.h:328,
                 from ./signal.h:52,
                 from c-stack.c:49:
c-stack.c:55:26: error: missing binary operator before token "("
   55 | #elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
      |                          ^~~~~~~~
  CC       c-strcasecmp.o
  • 解决:找到 c-stack.c 文件,将下面内容注释掉
#ifndef SIGSTKSZ
## define SIGSTKSZ 16384
##elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
/* libsigsegv 2.6 through 2.8 have a bug where some architectures use
   more than the Linux default of an 8k alternate stack when deciding
   if a fault was caused by stack overflow.  */
## undef SIGSTKSZ
# define SIGSTKSZ 16384
#endif

错误 2:

error: ‘numeric_limits’ is not a member of ‘std’
: error:::max’ has not been declared; did you mean ‘std::max’?
  • 解决:找到相应的文件添加头文件:#include <limits>

Qt 配置

IMX6ULL 配置

  • 在将交叉编译好的 qt 文件拷贝到开发板后,运行发现存在触摸屏没反应、页面部分被主屏幕的内容覆盖等问题,下面一一解决:
  1. 解决触摸屏没反应的问题:在 /etc/profile 的文件中增加一行:
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
  1. 解决页面部分被主屏幕内容覆盖的问题:将主屏幕界面禁用,在命令行中输入:
/etc/init.d/S05lvgl stop
  • 注意每次开发板开机时都需要输入一次,如果不想每次输入可以在开机启动中添加这条命令

总结

  1. 在交叉编译 Qt 的过程中会出现各种奇奇怪怪的错误,但是想清楚编译的目的是为了得到 qmake,所以不需要全部解决编译错误
  2. Qt 的移植还有其他方法,如果是正点原子的板子可以参考正点原子官方视频

参考资料

  1. https://blog.csdn.net/thisway_diy/article/details/140209030
  2. https://blog.51cto.com/u_16212814/7922110
  3. https://blog.csdn.net/weixin_43916584/article/details/137159900
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值