新闻  |   论坛  |   博客  |   在线研讨会
在 Windows 中使用 WSL 编译 Linux 和 U-Boot
toradex | 2020-09-30 15:13:49    阅读:609   发布文章

By Toradex 胡珊逢

1). 简介

通常当编译 LinuxU-Boot 相关源代码时,由于编译工具或者文件系统限制,这些任务需要在 Linux 发行版中完成,如常见的 UbuntuFedoraLinux MintArch Linux 等。在电脑安装双系统,或者虚拟机,是使用 Linux 发行版的主要方式。Windows 推出的 WSL Windows Subsystem for Linux)则提供了另外一种方式来使用 Linux 系统。本文接下来将介绍如何在 Windows 10 电脑上使用 WSL 来编译使用NXP iMX8 ARM平台的 LinuxU-Boot Device tree overlays

 

本文所演示的ARM平台来自于Toradex 基于NXP iMX8QM ARM处理器的Apalis iMX8QM ARM嵌入式平台。

 

 

2). 编译流程

WSL 有两个版本,这里我们将使用 WSL 2。在开始安装 WSL之前,推荐先安装 Windows Terminal。这是微软新推出的终端工具,可以很好的兼容 WSL。并且还直接集成了一些 Linux 的命令工具,如  sshscp

WSL 具体的安装方法请参考微软官方的适用于 Linux Windows 子系统安装指南 (Windows 10)。安装完毕后我们将使用 Ubuntu-20.04 为例进行编译演示。

打开 Windows Terminal 点击标签页旁边的 + ,可以看到刚才安装的 Ubuntu-20.04 WSL 已经自动出现在其中。点击后即可启动 Ubuntu 。目前的 WSL 还不支持图形,所以接下来的操作会在 Windows Terminal 以命令行的形式完成。

                                              image001.png

进入Ubuntu-20.04 WSL后,命令操作的形式和通常的 Ubuntu 没有区别。首先安装一些编译所需的软件。

sudo apt update
sudo apt install make bison flex
sudo apt install build-essential
sudo apt install libncurses-dev
sudo apt install libssl-dev

交叉编译工具 gcc 的安装可以通过两种形式。在 Ubuntu-20.04 WSL 中通过 wget 等命令直接下载。另外还可以在Windows  电脑上通过浏览器下载,然后使用 Windows 的文件浏览器直接访问  Ubuntu-20.04 WSL 的文件系统,将编译工具复制进去。交叉编译工具的选择可以参考这里

在文件浏览器中输入 \\wsl$\,其会显示电脑上可以用的 WSL 实例文件系统。例如将适用于 Apalis iMX8QM Linux BSP 5.0  gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz 复制到 Ubuntu-20.04/home/ben 目录下。

image002.png  

重新回到 Windows Terminal 命令行终端,解压该工具,并设置环境变量。

tar vxf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
export ARCH=arm64
export DTC_FLAGS="-@"
export PATH=/home/ben/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/:$PATH
export CROSS_COMPILE=aarch64-none-linux-gnu-

使用 git 工具下载 LinuxU-Boot 源码。

git config --global user.name "XXX"
git config --global user.email your_email
git clone -b toradex_imx_v2020.04_5.4.24_2.1.0 git://git.toradex.cn/u-boot-toradex.git
git clone -b toradex_5.4-2.1.x-imx git://git.toradex.cn/linux-toradex.git
git clone -b toradex_5.4-2.1.x-imx git://git.toradex.cn/device-tree-overlays.git


详细的编译步骤和说明可以参考我们开发者中心的相关网页说明

例如编译 U-boot

make apalis-imx8_defconfig
make -j3 2>&1 | tee build.log

例如编译 Linux device tree

make defconfig
make -j3 Image 2>&1 | tee build.log
make DTC_FLAGS="-@" freescale/fsl-imx8qm-apalis-ixora-v1.1.dtb


 编译 Device tree overlays

cpp -nostdinc -I ../../linux-toradex/arch/arm64/boot/dts/freescale -I ../../linux-toradex/include -undef -x assembler-with-cpp
apalis-imx8_atmel-mxt_overlay.dts apalis-imx8_atmel-mxt_overlay.dts.preprocessed
dtc -@ -Hepapr -I dts -O dtb -i ../../linux-toradex/arch/arm64/boot/dts/freescale -o apalis-imx8_atmel-mxt_overlay.dtbo
apalis-imx8_atmel-mxt_overlay.dts.preprocessed


 当这些都编译好以后,生成的文件都可以通过文件浏览器将其复制出来。

image003.png

image004.png

image005.png

在完成编译工作后,Windows Terminal 命令行终端输入 exit 命令即可退出 WSL,但其仍在后台运行。通过以下命令来查看仍在运行的 WSL 实例,并将其关闭。

PS C:\Users\Ben> wsl --list --running
适用于 Linux Windows 子系统分发版:
Ubuntu-20.04 (默认)
PS C:\Users\Ben> wsl --terminate Ubuntu-20.04

 

 

3). 总结

借助 WSL运行 Linux 发行版,为 Linux 开发人员提供一种简便的方式,免去双系统的切换,或者安装庞大的虚拟机系统。WSL 是直接运行在 CPU 上,避免了虚拟化技术的开销。目前该技术也有限制,如WSL 还无法使用图形界面,从而使得一些需要借助图形化界面 IDE Eclipse 完成的 C/C++ 应用开发还不是很适合。当然网络上也有关于如何在WSL 安装 X11 并通过远程桌面的方式来开启图形界面的说明,但这会影响到 WSL 的性能。WSL 的方式比较适合不需要借助图形界面的编译任务,如makecmake 编译,甚至是  Yocto 编译等。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客