Windows11 WSL安装Ubntu22.04,交叉编译C语言应用程序
Windows11 WSL安装Ubntu22.04,交叉编译C语言应用程序
- 前言
- 一、使用WSL安装ubuntu22.04
- windows相关设置
- 使用Microsoft Store安装ubuntu22.04
- 一些其他设置
- 将ubuntu22.04文件系统迁移到其他盘
- 使用Powershell切换ubuntu终端
- 二、使用交叉编译工具链交叉编译C语言程序
- 交叉编译工具链
- 编写C语言程序
- 上传到开发板上运行
- 总结
- 参考连接
前言
WSL可以直接在Windows上使用Linux环境,具有完整的Linux内核,支持更好的文件系统和兼容性。这个的好处是不用安装虚拟机,直接在Windows系统中使用Linux系统。
本篇文章来教大家,如何在windows上安装WSL,交叉编译C语言应用程序。
一、使用WSL安装ubuntu22.04
windows相关设置
第一步,搜索栏搜索启动或关闭windows功能
。
第二步,点进去,选择Hpyer-V
、Windows虚拟机监控程序平台
、适用于Linux的Windows子系统
、虚拟机平台
。
勾选后,重新启动完成修改。
使用Microsoft Store安装ubuntu22.04
在微软商店中,搜索ubuntu22.04,
直接获取安装,等待安装完成。
下载完成后,直接打开。
打开后,报以下错误。
在控制台中,输入wsl --update
安装适用于Linux的Windows子系统
wsl --update
再次打开ubuntu22.04,输入用户名和密码,此时就进入了wsl创建的ubuntu22.04。此时可以看到ubuntu版本为22.04,Linux内核为6.6。
此时就完成了基本的使用WSL安装Ubuntu22.04。我们就可以直接在windows上直接使用ubuntu22.04了。免去了繁琐的虚拟机Vmware安装ubuntu,开发难度较低。
常用的wsl命令
wsl -l --all -v #查看所有WSLwsl -d Ubuntu-22.04 #使用wsl启动ubuntuwsl --shutdown #停止正在运行的WSL
一些其他设置
将ubuntu22.04文件系统迁移到其他盘
按以下步骤进行即可。
wsl --shutdown #停止正在运行的WSLwsl -l --all -v #查看所有WSLwsl --export Ubuntu-22.04 F:\WSL-Ubuntu22.04\Ubuntu-22.04.tar # 导出到F盘wsl --unregister Ubuntu-22.04 # 注销原来的Ubuntu22.04# 导入ubuntu22.04 到F盘,这个可以自己定义
wsl --import Ubuntu-22.04 F:\WSL-Ubuntu22.04\Ubuntu22.04 F:\WSL-Ubuntu22.04\Ubuntu-22.04.tar --version 2
使用Powershell切换ubuntu终端
使用Windows 启动的终端,和我们日常使用Linux不一样,看着有点别扭。
Windows Powershell 可以切换Ubuntu终端,这样使用起来就和ubuntu一样了。 然后我们还可以看到windows文件夹,出现了我们安装的Ubuntu-22.04,我们可以直接简单拖文件的方式把文件放到Ubuntu22.04系统中。
二、使用交叉编译工具链交叉编译C语言程序
交叉编译工具链
我们需要把交叉编译工具链放到我们使用WSL安装的Ubuntu22.04系统中。下面介绍一种简单的方式,windows和ubuntu22.04互传文件。
安装MobaXterm
,打开设置。
导入WSL,建立SSH,即进入ubuntu22.04。
选择安装的Ubuntu22.04,用户名我这里选择使用root,直接以root权限登录,点击ok,进入即可。
这样我们就进入了Ubuntu终端。但是这里要注意的是,和windows终端进入ubuntu不同,使用Mobaxterm
连接WSL进入ubuntu,这个相当于ssh连接ubuntu。
我们可以直接通过sftp协议,Mobaxterm
中已经集成,直接通过那个红色的小地球,把交叉编译工具链放到自己建的目录中。我这里放到了
/root/tools
目录。
使用以下命令解压。
tar -zxvf arm-buildroot-linux-gnueabihf_sdk-buildroot.tar.gz #解压交叉编译工具链
解压完成后,编写脚本设置环境变量,每次打开终端,编写应用程序前,都要运行一次脚本。指定交叉编译工具链的位置。
export PATH=/root/tools/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin:$PATHexport CC="arm-buildroot-linux-gnueabihf-gcc"
export CXX="arm-buildroot-linux-gnueabihf-g++"
export ARCH="arm"
export CROSS_COMPILE="arm-buildroot-linux-gnueabihf-"
export TARGET_PREFIX="arm-buildroot-linux-gnueabihf-"
查看交叉编译工具链的版本,出现下图所示,即为设置成功。
编写C语言程序
编写一个简单的C语言程序。打印hellowrold。
#include<stdio.h>int main()
{printf("hello world !");return 0;
}
使用以下命令编译。
root@itrunk:~/hello_world# arm-buildroot-linux-gnueabihf-gcc hello.c -o hello
root@itrunk:~/hello_world# ls
hello hello.c
root@itrunk:~/hello_world# file hello
hello: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, not stripped
这个编译好的hello就是通过交叉编译工具链编译出来的可执行文件,我们可以放到开发板上,运行。
上传到开发板上运行
我们经过上节已经成功通过交叉编译工具链进行编译C语言程序,生成了可执行文件。我们就可以把可执行文件放到开发板上运行。
我们把开发板连接网口,自动获取IP。
查看IP,要求开发板和PC在同一个网段。
通过SFTP,直接把编译好的可执行程序,上传到开发板。以下是Ubuntu端命令。
root@itrunk:~/hello_world# sftp root@192.168.20.109
The authenticity of host '192.168.20.109 (192.168.20.109)' can't be established.
ED25519 key fingerprint is SHA256:V+7gXjtKHMNUDlsHZJQ/619JvcDaIBvOpYBoPwwCnI4.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.20.109' (ED25519) to the list of known hosts.
root@192.168.20.109's password:
Connected to 192.168.20.109.
sftp> put hello /oem/
Uploading hello to /oem/hello
在开发板上,给执行权限,执行hello可执行文件。运行如下图。
总结
至此,本文完成了WSL安装Ubuntu22.04的介绍、交叉编译C语言程序、SFTP上传至开发板的整个流程等内容。如有错误,欢迎指出。
参考连接
使用Windows11自带的WSL安装Ubuntu Linux系统教程
win11安装WSL2并配置Ubuntu环境