当前位置: 首页 > 科技观察

WSL:Windows系统下开发Linux程序的又一神器

时间:2023-03-20 13:08:25 科技观察

什么是WSL?什么是WSL2?激活WSL服务安装Ubuntu-18.04操作系统通过ssh远程登录编译Hello,World!作为一名嵌入式软件开发工程师,在Linux系统下编写代码、编译、调试是不可避免的。但是很少有同学会直接使用真正的Linux机器作为工作平台,除非是使用远程服务器编译的场景。比较常见的使用场景是:在Windows/Mac系统中,安装虚拟机,然后在虚拟机中安装Linux操作系统。Windows系统常用的虚拟机有:Virtualbox、VMWare,Mac系统一般用ParallelsDesktop,速度确实更快!很久以前,我参与的项目主要是物联网网关,只需要编译linux系统即可。执行程序,所以在日常工作中,直接在Ubuntu虚拟机中敲代码(编辑:VSCode、SubLime)、编译、调试。后来需要开发跨平台的应用,开发模式就变成了:类型代码:indows系统的VisualStudio;编译Windows应用程序:直接使用VisualStudio中的VC编译器进行编译;编译Linux应用程序:通过远程部署方式是将代码同步到Ubuntu虚拟机,然后远程编译调试;这种开发模式比较常见,但是每次ubuntu虚拟机都很耗资源,启动很慢!编写跨平台代码,使用CMake工具管理构建过程也很方便。之前写过2篇相关的文章:《使用 cmake 来搭建跨平台的应用程序框架:C语言版本》《使用 cmake 来搭建跨平台的应用程序框架:C++版本》这两篇文章的总结可以看作是一个简单的工程模板。通常如果我需要写一些简单的demo发给别人,我会复制它们并添加demo代码。说了这么多,都是在描述跨平台开发的工作场景,或者说开发模式。其实在Windows系统中,还有一种安装Linux系统的方式,就是WSL/WSL2!接下来就把我的安装配置过程分享给大家!什么是WSL?这部分没什么好说的,直接摘自微软官网如下:WSL(WindowsSubsystemforLinux):Windows系统中的一个子系统,可以运行Linux操作系统。允许开发人员按原样直接在Windows上运行GNU/Linux环境(包括大多数命令行工具、实用程序和应用程序),而无需传统虚拟机或双启动设置的开销。什么是WSL2?WSL2是Windows子系统架构的新版本,是对底层架构的一次重大改造。它使用虚拟化技术和Linux内核来实现其新功能,主要目标是提高文件系统性能和增加完整的系统调用兼容性。个人理解:WSL:不是真正的Linux操作系统,只是Linux应用程序与Windows操作系统之间的一个适配层。在这个适配层之上,可以运行Linux应用程序,有点类似于以前的cygwin。WSL2:是一个虚拟机,类似于VitualBox,上面运行着完整的Linux操作系统。与VirtualBox和VMWare相比,WSL2提供了更全面的兼容性、更好的与Windows系统的互操作性、更快的运行速度和更少的系统资源。激活WSL服务并按Win+X启动WindowsPowerShell(管理员)。注意:这个是带管理员的:或者直接在搜索窗口输入Power,然后选择以管理员身份运行:PowerShell窗口是:是的把PowerShell看成是升级版,更强大的cmd。在PowerShell窗口输入如下命令激活WSL服务:Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Windows-Subsystem-Linux这时候提示需要重启系统(不用多说,肯定选Y):电脑重启后,按Win+R,调出命令输入窗口。输入命令appwiz.cpl。点击左侧【启用或关闭Windows功能】:弹出如下窗口:可以看到:【WindowsSubsystemforLinux】已经勾选,说明WSL服务已经启动。接下来要做的是安装Ubuntu操作系统。安装Ubuntu-18.04并启动操作系统【WindowsStore】:在右上角的搜索栏输入:Ubuntu这里我们选择Ubuntu-18.04,这也是我工作中使用的版本。下载速度很快:安装完成后点击【开始】按钮:第一次打开速度稍慢,1分钟左右,提示设置用户名和密码,然后进入我们的窗口熟悉的:这样,Ubuntu-18.04系统就安装好了!我一般都是在安装完系统后设置root用户的密码,以后总是需要用root身份登录系统。$sudopasswd系统安装完成后,首先要做的一般是更换软件源。可以选择阿里、清华或中科大的来源。这里可以直接使用清华的软件源:$cd/etc/apt$sudocpsources.listsource.list.bak$sudovimsources.list复制粘贴如下软件源:debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionicmainrestricteduniversemultiverse#deb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionicmainrestricteduniversemultiversedebhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionic-updatesmainrestricteduniversemultiverse#deb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionic-updatesmainrestricteduniversemultiversedebhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionic-backportsmainrestricteduniversemultiverse#deb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionic-backportsmainrestricteduniversemultiversesedebhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionic-securitymainrestricteduniversemultiverse#deb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionic-securitymainrestricteduniversemultiple保存后,执行更新命令:$sudoapt-getupdate$sudoapt-getupgrade这一步,请耐心等待,不要心急。当提示输入时,选择Y即可。通过ssh远程登录如果你觉得这个暗黑的窗口有点难看,可以通过Windows系统中的Xshell工具远程登录(ssh)。为此,我们需要在Ubuntu-18.04中重新安装sshd服务:$sudoaptpurgeopenssh-server$sudoaptinstallopenssh-server安装完成后需要修改配置文件运行远程登录:$sudovim/etc/ssh/sshd_config修改1:把第13行的#Port22改成Port22。修改2:把第32行的#PermitRootLoginprohibit-password改成PermitRootLoginyes。修改3:将第56行的#PasswordAuthenticationyes修改为PasswordAuthenticationyes。修改后启动sshd服务:$sudoservicesshrestart此时启动Windows系统中的Xshell进行远程登录。主机名只需要填写:localhost:建立链接时,需要保存秘钥:然后输入用户名和密码:如果出现如下提示,忽略它,直接选择【否】。这个和linux图形窗口有关,后面会讲到。至此,你就可以愉快的在Xshell中操作Ubuntu命令行窗口了。是不是觉得少了点什么?为什么桌面、文档和图片等默认文件夹丢失了?后面我们演示WSL2的时候就会解决这个问题!编译你好,世界!最后,我们来编译一个应用程序。先安装gcc编译器:$sudoapt-getinstallgcc然后写一个hello.c文件:#includeintmain(){printf("Hello,World!\n");return0;}然后编译执行:ccc@DESKTOP-5LT2QM5:~/tmp$gcchello.c-ohelloccc@DESKTOP-5LT2QM5:~/tmp$./helloHello,世界!完美的!二维码关注。转载本文请联系物联网小镇。