文章目录
开发板是飞凌的i.mx6
配置WSL2环境
首先是WSL2
什么是WSL2?
- WSL 2 是 WSL 中体系结构的新版本,它更改 Linux 发行版与 Windows 交互的方式。
- WSL 2 的主要目标是提高文件系统性能并增加系统调用的完全兼容性。
- 每个 Linux 发行版都可以作为 WSL 1 或 WSL 2 发行版运行,并可随时进行切换。
- 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