wsl 是什么?wsl2 又是什么?如何激活 wsl 服务,安装 ubuntu-18.04 系统,并通过 ssh 远程登录来编译 hello, world 程序?作为一名嵌入式软件开发工程师,在 linux 系统下编写代码、编译和调试是不可避免的。
然而,极少有学生会直接使用 Linux 实体机作为工作平台,除非是使用远程服务器进行编译的场景。更常见的使用场景是在 Windows 或 Mac 系统中安装虚拟机,然后在虚拟机中运行 Linux 操作系统。
在 Windows 系统中,常用的虚拟机包括 Virtualbox 和 VMWare,而在 Mac 系统中通常使用 Parallels Desktop,其速度确实较快!
在过去,我参与的项目主要是物联网网关,只需要在 Linux 系统下编译可执行程序,因此日常工作中都是在 Ubuntu 虚拟机中编写代码(使用编辑器如 VSCode、SubLime)、编译和调试。
后来需要开发跨平台应用,开发模式变成了:在 Windows 系统中的 Visual Studio 中编写代码;编译 Windows 应用程序时,直接使用 Visual Studio 中的 VC 编译器;编译 Linux 应用程序时,通过远程部署的方式,将代码同步到 Ubuntu 虚拟机中,然后进行远程编译和调试。这种开发模式是相当常见的,只是每次 Ubuntu 虚拟机启动较慢且耗费资源。
编写跨平台代码时,使用 CMake 工具来管理构建过程非常方便。我之前写过两篇相关的文章:
《使用 CMake 搭建跨平台的应用程序框架:C 语言版本》
《使用 CMake 搭建跨平台的应用程序框架:C++ 版本》
这两篇文章总结了一个简单的工程模板。我通常会复制这个模板,然后添加演示代码来创建简单的 Demo。
以上描述了跨平台开发的工作场景或开发模式。实际上,在 Windows 系统中,还有一种安装 Linux 系统的方式,这就是 WSL/WSL2!
下面我将分享我的安装和配置过程。
什么是 WSL?这部分没有太多需要解释的,直接从微软官网摘录如下:
WSL(Windows Subsystem for Linux):Windows 系统中的一个子系统,允许在该子系统上运行 Linux 操作系统。它让开发者能够直接在 Windows 上运行 GNU/Linux 环境(包括大多数命令行工具、实用程序和应用程序),且不会产生传统虚拟机或双启动设置的开销。

什么是 WSL2?WSL2 是适用于 Linux 的 Windows 子系统体系结构的新版本,它是对基础体系结构的一次重大改造。它使用虚拟化技术和 Linux 内核来实现其新功能,主要目标是提高文件系统性能和添加完全的系统调用兼容性。
我的理解是:
WSL:并不是一个真正的 Linux 操作系统,仅仅是 Linux 应用程序与 Windows 操作系统之间的一个适配层。在这个适配层之上,可以运行 Linux 应用程序,类似于以前的 cygwin 的方式。
WSL2:它是一个虚拟机,类似于 Virtual Box,在这个虚拟机之上运行一个完整的 Linux 操作系统。相对于 Virtual Box、VMWare 来说,WSL2 提供了更全面的兼容性、与 Windows 系统的互操作性更好、运行速度更快、占用系统资源更少。
激活 WSL 服务 按 Win+X,启动 Windows PowerShell(管理员),注意:是带有管理员权限的:
或者直接在搜索窗口中输入 Power,然后选择以管理员方式运行:

PowerShell 的窗口是:

可以将 PowerShell 理解为升级版的、功能更强劲的 cmd。
在 PowerShell 窗口中,输入以下指令来激活 WSL 服务:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
此时,会提示需要重启系统(当然选择 Y):

重启电脑后,按 Win + R,调出命令输入窗口。输入指令 appwiz.cpl。
点击左侧的【启动或关闭 Windows 功能】:

弹出下面的窗口:

可以看到:【适用于 Linux 的 Windows 子系统】这一栏已经被勾选了,说明 WSL 服务已经启动。
接下来要做的事情,就是安装 Ubuntu-18.04 操作系统。
安装 Ubuntu-18.04 操作系统 启动【Windows Store】:

在右上角的搜索栏中,输入:Ubuntu

我们这里选择 Ubuntu-18.04,这是我工作中使用的版本。

下载速度相当快:

安装完成后,点击【启动】按钮:

第一次打开速度稍微慢一些,大约 1 分钟左右,提示设置用户名和密码,然后就进入我们熟悉的窗口了:

这样,Ubuntu-18.04 系统就安装好了!
我通常在系统安装后,会设置 root 用户的密码,因为以后会需要使用 root 身份登录系统。
$ sudo passwd

系统安装后,第一件事情通常是更换软件源。
可以选择阿里、清华或中科大的源,这里直接使用清华的软件源:
$ cd /etc/apt $ sudo cp sources.list source.list.bak $ sudo vim sources.list
将下面的软件源复制并粘贴进去:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
保存后,执行更新指令:
$ sudo apt-get update $ sudo apt-get upgrade
这个步骤,请同学们耐心等待,稍安勿躁。出现提示输入时,选择 Y 即可。
通过 ssh 远程登录 如果您觉得这个黑乎乎的窗口有点丑,那么可以通过 Windows 系统中的 Xshell 工具来远程登录(ssh)。
为了这个目的,我们需要在 Ubuntu-18.04 中重新安装 sshd 服务:
$ sudo apt purge openssh-server $ sudo apt install openssh-server
安装完成后,需要修改配置文件,以运行远程登录:
$ sudo vim /etc/ssh/sshd_config
修改1:将第 13 行的 #Port 22 改为 Port 22。
修改2:将第 32 行的 #PermitRootLogin prohibit-password 改为 PermitRootLogin yes。
修改3:将第 56 行的 #PasswordAuthentication yes 改为 PasswordAuthentication yes。
修改后,启动 sshd 服务:
$ sudo service ssh restart

此时,启动 Windows 系统中的 Xshell 来远程登录,主机名只需填写:localhost 即可:

建立连接时,需要保存密钥:

然后输入用户名和密码:


如果出现下面的提示,先不用理会它,直接选择【否】,这是与 Linux 的图形窗口相关的,后面会解释。

此时,就可以在 Xshell 中愉快地操作 Ubuntu 的命令行窗口了。

是不是感觉少了点什么?那些 Desktop、Documents、Picture 等默认文件夹怎么都不见了?
这个问题,后面在演示 WSL2 的时候就见分晓了!
编译 Hello, World! 最后,我们来编译一个应用程序。首先安装 gcc 编译器:
$ sudo apt-get install gcc
然后编写一个 hello.c 文件:
#include <stdio.h>
<p>int main() {
printf("Hello, World! \n");
return 0;
}接着编译并执行:
ccc@DESKTOP-5LT2QM5:~/tmp$ gcc hello.c -o hello ccc@DESKTOP-5LT2QM5:~/tmp$ ./hello Hello, World!
完美!
------ End ------
以上就是WSL:在 Windows 系统中开发 Linux 程序的又一神器的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号