嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板

发布时间:2022-08-18 18:27

想要把qt工程放到开发板上运行,就需要用到交叉编译。由于qt是跨平台的,所以只需要换个编译器编译一下就可以。
以qt学习–计时器的例子为例,在移植之前还需要进行一个准备工作,在windows下运行的时候,电脑屏幕很大,但是运行的窗口只有一点点大,开发板也有外接屏幕,如何让运行窗口自动适配开发板的外接屏幕呢?令其占满屏幕显示,而不是一小块。

一、编译生成在开发板上的可执行文件

第一步:需要设置一下,先给ui布局,如果不布局,控件就不会随着屏幕的大小的变化而变化。利用代码来获取屏幕的大小,给widget.cpp文件下添加如下代码

#include  
#include  
#include  

QDesktopWidget *deskTopWidget = QApplication::desktop(); 
QRect deskRect = deskTopWidget->availableGeometry(); 
int appH = deskRect.height(); 
int appW = deskRect.width(); 
this->setFixedSize(appW, appH); 
setGeometry(0, 0, appW, appH);

添加完后,编译运行一下,会看到现在运行结果显示框与电脑屏幕一样大。将layoutstrength处的(0,0,0)改成了(5,2,3),可以使得界面更美观。
嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板_第1张图片
嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板_第2张图片

第二步:用ssh软件把time文件夹传到ubuntu下

root@ubuntu:~# cd /home/qt/
root@ubuntu:/home/qt# ls
qt_source  qt_system
root@ubuntu:/home/qt# mkdir qt_demo
root@ubuntu:/home/qt# ls
qt_demo  qt_source  qt_system

root@ubuntu:/home/qt# cd qt_demo/
root@ubuntu:/home/qt/qt_demo# ls
time

第三步:删掉.pro.user文件,以免影响后面

root@ubuntu:/home/qt/qt_demo# cd time/
root@ubuntu:/home/qt/qt_demo/time# ls
main.cpp  time.pro  time.pro.user  widget.cpp  widget.h  widget.ui

root@ubuntu:/home/qt/qt_demo/time# rm time.pro.user 
root@ubuntu:/home/qt/qt_demo/time# 
root@ubuntu:/home/qt/qt_demo/time# ls
main.cpp  time.pro  widget.cpp  widget.h  widget.ui

第四步:执行make

root@ubuntu:/home/qt/qt_demo/time# make
make: *** 没有指明目标并且找不到 makefile。 停止。

显示找不到makefile,需要在命令行写上之前执行脚本文件并执行make以及make install的时候生成的文件的路径,我的在“/usr/local/Qt-5.7.0/bin/qmake ”路径下。
嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板_第3张图片

root@ubuntu:/home/qt/qt_demo/time# /usr/local/Qt-5.7.0/bin/qmake 
Info: creating stash file /home/qt/qt_demo/time/.qmake.stash

按道理执行完这条路径指令之后应该没有任何提示的,删除生成的makefile重新执行一下

root@ubuntu:/home/qt/qt_demo/time# ls
main.cpp  Makefile  time.pro  widget.cpp  widget.h  widget.ui
root@ubuntu:/home/qt/qt_demo/time# rm Makefile 
root@ubuntu:/home/qt/qt_demo/time# /usr/local/Qt-5.7.0/bin/qmake 
root@ubuntu:/home/qt/qt_demo/time# 
root@ubuntu:/home/qt/qt_demo/time# ls
main.cpp  Makefile  time.pro  widget.cpp  widget.h  widget.ui
root@ubuntu:/home/qt/qt_demo/time# make

root@ubuntu:/home/qt/qt_demo/time# ls
main.cpp  Makefile        moc_widget.o  time.pro     widget.cpp  widget.o
main.o    moc_widget.cpp  time          ui_widget.h  widget.h    widget.ui

生成time之后,在ubuntu界面再执行一条指令查看一下time的属性,看是否能够在开发板上运行。如果是属于ARM平台的二进制文件,则可以在开发板上执行;如果是x86-64,那就是x86上位机平台文件,不可以在开发板执行。
在这里插入图片描述

说明:
鉴于之前在开发板上烧写qt5.7未能成功,就选择使用早之前在开发板上可以运行的qt4.7版本了。

  • 针对qt4.7版本,其qmake文件所在路径为:/opt/qt-4.7.1/bin/qmake
  • 写完路径之后,执行make,如果报错

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号