首页 > 系统相关 >RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试

RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试

时间:2023-09-07 12:45:00浏览次数:43  
标签:Qt 交叉 Demo 宿主机 编译 编译器 ubuntu qt

前言

  在之前的博文中已经搭建好了一个比较完善的ubuntu宿主机,都很完善了但是发现没有Qt交叉编译开发环境,所以还需要搭建一套Qt交叉编译开发环境。

 

补充说明

  本篇是基于《RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传输、安装vscode和samba共享服务》的虚拟机上进行Qt交叉编译搭建的。

 

在ubuntu上安装桌面版Qt

  (PS:这里就是安装qt的ubuntu开发环境,包含了qtcreator和支持gcc的编译器的桌面编译板本。)

步骤一:下载Qt5.14.2

  在这里插入图片描述

步骤二:安装桌面板本

  (PS1:安装qt的时候,请先断网,不然一定要登录)
  (PS2:qt5.14.2是官方给的板本,非必要前提下最好不要自行更改板本)
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  安装完成,打开QtCreator,如下图:
  在这里插入图片描述

 

创建一个hello world应用Demo

步骤一:新建Qt项目

  新建一个testDemo测试工程:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  这里注意是桌面gcc板本:
  在这里插入图片描述

步骤二:做一个简单的工程

  让其使用全屏/正常显示切换:
  在这里插入图片描述

步骤三:本机运行测试

  在这里插入图片描述

  点击“全屏切换”:
  在这里插入图片描述


# 在ubuntu上搭建交叉编译Qt编译器(测试官方提供的buildroot的qt板本)   (PS:官方提供的是buildroot的qt交叉编译环境,这里我们先测试一下是否可以使用该板本的进行显示)。 ## 步骤一:下载解压   下载官方提供的编译qt的包:   ![在这里插入图片描述](/i/ll/?i=c832d377c5d742cc853fdbad15a9eddb.png)

  放到宿主机上,解压:
  在这里插入图片描述

步骤二:打开QtCreator配置环境

  配置Qt板本的qmake
  在这里插入图片描述

  在这里插入图片描述

  配置交叉编译器gcc
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  然后新建编译套件:
  在这里插入图片描述

  在这里插入图片描述

步骤三:工程切换至buildroot套件

  在这里插入图片描述

步骤四:编译工程

  在这里插入图片描述

  在这里插入图片描述

步骤五:弄到开发板上去,使用sftp过去

  Ubuntu带了常用的ssh和stfp,用户名和密码都是topeet,所以可以使用常规方式filezile传递过去,运行发现少库,先测试个简单的c工程,再看有没有必要把qt的东西移植过去:
  在这里插入图片描述

  查找交叉编译器文件夹,sysroot里面是有的:
  在这里插入图片描述

  给他弄过去:
  在这里插入图片描述

  在这里插入图片描述

  检查sysroot:
  在这里插入图片描述

  发现没copy过去?(之前是usr/lib,这是在usr/local/lib了)
  在这里插入图片描述

  再次copy(发现Qt5也在,省的单独弄了):
  在这里插入图片描述

  Copy失败,发现大小不够(lib打包有1.4个G,这里只有800MB不到了,就算单独抽出Qt的全库也不止800MB,身为):
  在这里插入图片描述

 

小结

  用buildroot-qt的交叉编译器编译出来的可以放到ubuntu上,因为他们内核和交叉编译器板本是一样的,ubuntu也是用交叉编译器去构建了的。
  在这里插入图片描述

  但是因为,空间小了,带qt的库移植不过去(后续还需要移植Qt,ffmpeg过去,还有Qt应用,相对比较麻烦,所以不继续了),更换buildroot的系统(因为已经弄好了qt库,然后ubuntu原先以为支持额外usb触摸屏,现在也不支持,那么更换buildroot更合适了)

标签:Qt,交叉,Demo,宿主机,编译,编译器,ubuntu,qt
From: https://www.cnblogs.com/qq21497936/p/17684527.html

相关文章

  • iTOP-RK3568开发板内核模块实验-设置交叉编译器
    在上一章节我们编写了最简单的helloworld驱动程序。有了驱动程序以后,要如何编译并使用驱动呢。编译驱动有俩种方法,分别是将驱动编译成内核和将驱动编译成内核模块。我们先来学习如何将驱动编译成内核模块、4.1设置交叉编译器1下载网盘资料下的交叉编译器,网盘路径为:“XXX”,将下......
  • Go 程序编译为二进制文件与配置文件路径不匹配问题
    当将Go程序编译为二进制文件并在服务器上运行时,可能会遇到配置文件路径不匹配的问题。在本篇博客中,我将介绍两种解决方法。方法一:指定配置文件的绝对路径在服务器上运行二进制文件时,通过命令行参数或环境变量传递配置文件的绝对路径,而不是依赖于相对路径。这样可以确保程序能......
  • 正则表达式编译取值法
       还是使用《正则表达式直接取值法》中的例子,这里介绍一下用编译取值法编辑正则表达式取得我们想要的元素。text="姓名:海风,性别:男,年龄:52,账号:12345,密码:6789,作品:<<'双随机'管理系统>>电\\\话:133****5117(常用)"   采用编译取值法匹配全部字符,包......
  • rust 交叉编译
    交叉编译Windows下编译到arm64-linux需要下载arm的编译toolchain,有不同的选择:使用aarch64-none-linux-gnu或者aarch64-none-linux-musl。这里使用aarch64-none-linux-gnu安装好rust,可以正常编译下载windows下的arm-gnu-toolchain,并安装,配置环境变量aarch64-none......
  • Maven对源文件的编译
    我们在服务器上安装了JDK17以及Maven,然后有个脚本会从不同的仓库拉取源码并通过mvncompile命令进行编译。不同的源码采用不同版本的jdk进行编辑,那么只有一个JDK17可以满足编译需求吗?在说明该问题前我们先回顾下Java文件的编译回顾Java的编译首先,所谓的源文件本身就是个文本文件,文......
  • Linux 编译安装 OpenSSL
    #下载软件包wgethttps://www.openssl.org/source/openssl-1.1.1v.tar.gz#编译安装OpenSSLtarzxvfopenssl-1.1.1v.tar.gzcdopenssl-1.1.1v./config--prefix=/usr/local/openssl-1.1.1make&&makeinstall#备份原OpenSSLmv/usr/bin/openssl/usr/bin/openssl.......
  • Androd 7.0编译错误合集
    1 error:ro.build.fingerprintcannotexceed91bytesbuild/tools/post_process_props.py.Changelinesasfollows:PROP_NAME_MAX=31#PROP_VALUE_MAX=91PROP_VALUE_MAX=128PROP_NAME_MAX=31#PROP_VALUE_MAX=91PROP_VALUE_MAX=128bionic/libc/include......
  • android编译报错:error: ro.build.fingerprint cannot exceed 91 bytes
    http://stackoverflow.com/questions/28776970/android-build-error-ro-build-fingerprint-cannot-exceed-91-bytesbuild/tools/post_process_props.py.Changelinesasfollows:PROP_NAME_MAX=31#PROP_VALUE_MAX=91PROP_VALUE_MAX=128PROP_NAME_MAX=31#PROP_V......
  • ota升级包编译过程中firmware如何添加进来
    整个分析过程中,机型名以xxxx为例主要可分为一firmware如何添加进target-files.zip二编译ota升级包时如何从target-files.zip取出firmware并添加到ota升级包三如何向升级脚本updater-script中加入控制firmware升级的语句四增量升级包相比全量包不同的步骤五结论及修复方......
  • 输出编译ota升级包时的打包参数
    build / tools/releasetools/common.pydefParseOptions(argv,docstring,extra_opts="",extra_long_opts=(),extra_option_handler=None):"""Parsetheoptionsinargvandreturn......