WSL2环境下交叉编译QT工程,开发板成功运行(全过程详解)

4 篇文章 7 订阅

开发板是飞凌的i.mx6

配置WSL2环境

首先是WSL2

什么是WSL2?

  1. WSL 2 是 WSL 中体系结构的新版本,它更改 Linux 发行版与 Windows 交互的方式。
  2. WSL 2 的主要目标是提高文件系统性能并增加系统调用的完全兼容性。
  3. 每个 Linux 发行版都可以作为 WSL 1 或 WSL 2 发行版运行,并可随时进行切换。
  4. WSL 2 是底层体系结构的主要功能,它使用虚拟化技术和 Linux 内核来实现其新功能。

安装WSL2

我就不班门弄斧了,安装过程详见微软官方给的教程吧

适用于 Linux 的 Windows 子系统安装指南 (Windows 10)

下面几个步骤不全,直接官方抄过来的,详细的还是请看官方这个主要是给我自己记录用

步骤 1 - 启用适用于 Linux 的 Windows 子系统

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。
以管理员身份打开 PowerShell 并运行:
PowerShell

复制

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

建议现在转到步骤 #2,更新到 WSL 2,但如果只想安装 WSL 1,现在可以重新启动计算机,然后继续执行步骤 6 - 安装所选的 Linux 发行版。 若要更新到 WSL 2,请等待重新启动计算机,然后继续执行下一步。

步骤 2 - 检查运行 WSL 2 的要求

若要更新到 WSL 2,需要运行 Windows 10。
对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。
若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 (或者在 Windows 命令提示符下输入 ver 命令)。 更新到“设置”菜单中的最新 Windows 版本。

步骤 3 - 启用虚拟机功能

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。
以管理员身份打开 PowerShell 并运行:
PowerShell

复制

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。

步骤 6 - 安装所选的 Linux 分发

在这里插入图片描述

安装终端MobaXterm

MobaXterm这个终端神器有多强就不用我多说了,自己百度就可以了,下载的话官网比较慢,找个第三方网站下个汉化版就行,都一样用

在这里插入图片描述

小技巧

对于使用wsl,会发现这个不存在可视化的界面,全部都是命令来执行,为了方便文件和windows的互通,可以在网络中添加wsl2的位置

windows10 的linux子系统(windows subsystem for linux)WSL 文件位置以我的系统为例,WSL的root目录对应windows的:

C:\Users\XXXXXXX\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs

其中AppData文件夹默认是隐藏的,但你可以在路径里输入AppData进去。但实际上微软为我们提供了一个默认的变量可以直接指向WSL的目录,wsl$ 你可以在运行(win+R)或资源管理器的路径里直接输入

\\wsl$ 

进入Ubuntu的目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装配置交叉编译器 & QT

交叉编译器安装

我这里使用的fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0版本的交叉编译器

把我们的交叉编译器的安装包放到wsl2可以找到并且打开的地方,我是新建了一个work文件夹,然后直接复制到了文件夹中(注意:在从Windows系统中复制到wsl中时,可能会没有权限,所以要现在wsl中,给新建的文件夹work一下最高的权限,sudo chmod 777 /work,这样之后就不会提醒权限问题了)
在这里插入图片描述

在Linux里,我们也是要先修改安装工具的权限

chmod 777 fsl fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh

然后执行交叉编译工具,直接执行脚本安装交叉编译工具,连续敲下两次回车键确认,再输入用户密码即可。本次安装的目录为脚本所指定的默认安装的目录,后面的内核编译环境的交叉编译都是按这个安装目录去操作,所以建议默认安装到 /opt/fsl-imx-x11/4.1.15-2.1.0 这个默认目录。

./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh

命令行会提示:

Enter target directory for SDK (default: /opt/fsl-imx-x11/4.1.15-2.1.0)

连续两次按下回车键,程序将会自动安装交叉编译器以及相关的SDK

设置环境变量

. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

我用到的交叉编译器为arm-poky-linux-gnueabi-gcc,每次使用前设置环境变量,然后检查版本

arm-poky-linux-gnueabi-gcc -v

正常情况下会打印出gcc 的版本信息:

gcc version 5.3.0 (GCC)

这样算是环境变量符合我们的需要

QT安装

qt的安装方法跟上面差不多,如果不想用wsl的,可以用虚拟机,装一个ubuntu,进行可视化的操作,这样操作的话就跟下面的步骤有很大的区别了,想看的可以参考一下这篇文章

Linux 胎教版Qt5.6.2 安装 环境搭建(和 出现错误的解决)

说回来这次的过程,先修改该文件的权限

下面为qt opensource linux x64 5.5.1.run 添加可执行权限,再执行安装。

chmod 777 qt-opensource-linux-x64-5.6.2.run
sudo ./qt-opensource-linux-x64-5.6.2.run

安装过程就不多说了,会弹出来一个安装的界面,跟windows没啥区别

安装目录建议在

/opt/Qt5.6.2

安装make

如果make之后提示
在这里插入图片描述
那么需要再安装一个make

执行指令

sudo apt-get install make

在这里插入图片描述

注意

因为现在的wsl还没有图形化界面,所以也没办法运行qt。这一步骤的qt安装,其实对于本次的操作是没有什么用的,因为前面安装的fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0 里面是包含了qt的相关的sdk。所以已经有了qt编译的运行环境,不需要去在额外的调用qt或者其他的操作。直接使用集成好的命令qmake就可以了。

检查QT编译环境:

qmake -v

QMake version 3.0
Using Qt version 5.6.2 in /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib
修改QT配置文件:

sudo nano /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++/qmake.conf

删除

include(../oe-device-extra.pri)

Qt工程编译

这里我就直接拿一个在window环境下编写好的qt定时器程序过来进行验证。

这个qt定时器怎么写,教程还没写,待续…

也是先复制到我们的wsl目录下
.在这里插入图片描述

第一步 删除.pro.user

在我们的终端中可以看到
在这里插入图片描述
有这么一个文件,后缀为.pro.user,这个文件要进行删除,防止出现错误

rm ./Qt_Time.pro.user

最好呢把其他的无关文件也都删除,包括Windows环境下编译生成的Makefile文件,我最后留的文件如下所示

在这里插入图片描述

第二步 qmake生成Makefile

在这里插入图片描述

qmake

在这里插入图片描述
可以看到生成了我们需要的Makefile

第三步 make

make

在这里插入图片描述
大功告成,我们的可执行文件已经生成了,那么接下来就是发送到板子上运行了

注意

运行qmake和make命令前,一定要先运行我们的环境

. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

测试运行

scp 网络发送

发送文件当然是直接通过网络啦

scp Qt_Time root@192.168.0.232:/tmp

在这里插入图片描述

发送成功

执行这个命令,就可以完成把Qt_time这个可执行文件发送到IP地址为192.168.0.232的用户root的tmp文件夹下

ssh登录

现在已经发送到了板子里,那么ssh登录运行就可以了

ssh root@192.168.0.232

打开tmp文件夹
在这里插入图片描述

可以看到我们刚才发送过来的文件

运行

执行

./Qt_Time

这时候在我们的开发板上是没有反应的,还会报错,
在这里插入图片描述
要先执行这个语句

export DISPLAY=:0.0

然后再运行
在这里插入图片描述
这时候可以看到我们的开发板,已经开始运行我们的QT程序了。
在这里插入图片描述

注意

在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:

DISPLAY=:0.0
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值