Windows下使用Visual Studio + WSL2开发Linux项目之环境部署
一、下载安装Visual Studio
1.1 下载地址
推荐下载Visual Studio 2022 预览版,64位架构,速度更快
- Visual Studio 2022 预览版
- Visual Studio 2022
- Visual Studio 2019
选择community版本下载,免费
1.2 安装C++项目工具集
打开安装器,勾选使用 C++ 的桌面开发
和使用 C++ 的 Linux 开发
,安装目录可以更改
二、安装wsl2
先决条件
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。 如果使用的是更早的版本,请参阅手动安装页。
BIOS开启CPU虚拟化。
2.1 安装 WSL
- 从微软商店获取Ubuntu 22.04.2 LTS
- 在管理员模式下打开 PowerShell,输入 wsl --install 命令,然后重启计算机。
wsl --install
此命令将启用运行 WSL 并将Ubuntu安装为默认发行版。 (可以更改此默认发行版)。
重新启动计算机,打开安装的Ubuntu-22.04
,根据提示逐步设置用户名和密码。
2.2 安装 Windows 终端(推荐)
参考搭建优雅的Windows终端,只需要执行其中的一、二、4.2
下载编程英文字体,解压后全选字体——为所有用户安装
配置完成后,在管理员模式下打开 Windows terminal 或者 PowerShell,执行以下命令,升级WSL。
wsl --update
wsl --shutdown
2.3 更换清华大学源
打开Windows终端,下拉选择Ubuntu-22.04进入wsl
方法1:手动替换
sudo nano /etc/apt/sources.list
打开Ubuntu 的软件源配置文件,将里面的内容全部删除,替换为以下内容:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
方法2:命令替换
执行如下命令自动替换
sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
更新软件源,安装必要工具
sudo apt update && sudo apt upgrade -y
sudo apt install curl wget git ca-certificates build-essential net-tools -y
sudo apt install g++ gdb make ninja-build rsync zip -y
2.4 WSL ssh 配置
老样子,打开Windows终端,下拉选择Ubuntu-22.04进入wsl
- 重新安装openssh-server
sudo apt remove openssh-server
sudo apt install openssh-server -y
sudo service ssh start
sudo service ssh status
sudo systemctl enable ssh
- 在Ubuntu中查看WSL2的ip(默认为浮动IP,每次重启Ubuntu后改变)
ifconfig
然后可以在Windows terminal中SSH该IP进行登陆。
ssh [用户名]@[ip]
固定WSL IP
为了方便 Visual Studio 通过 ssh 连接 WSL 编译项目,需要固定WSL IP。这里采用端口转发的方法迂回完成此目标。
- 打开Ubuntu22.04,编辑ssh配置文件 /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
- 添加以下两行内容,用于更改端口号为2000,允许ssh密码登录权限
Port 2000
PasswordAuthentication yes
- 防火墙允许2000端口
sudo ufw allow 2000
- 重启ssh服务和防火墙
sudo service ssh restart
sudo ufw reload
- 管理员模式下打开 Windows terminal或powershell,配置端口转换
netsh interface portproxy add v4tov4 listenport=2100 listenaddress=0.0.0.0 connectport=2000 connectaddress=localhost
之后本机就可以通过ssh [用户名]@127.0.0.1 -p 2100
来连接WSL啦
三、基于 WSL 2 和 MSBuild 的 Linux 项目
3.1 创建项目
打开Visual Studio,创建新项目—选择 C++ Linux 控制台应用程序—填写项目和解决方案名称、选择项目保存目录,完成创建
3.2 配置跨平台
工具——选项
跨平台——连接管理器——添加,填写WSL IP、用户名、密码。点击连接,接受保存指纹。
可以看到Debug已经出现了WSL 的连接
修改字体,使o0lI便于区分
3.3 生成项目
项目属性——常规——平台工具集,选择WSL2 GCC Toolset
,点击确定
返回。
VS2019没有
WSL2 GCC Toolset
,则选择GCC for Windows Subsystem for Linux
工具集
按 F7 或者 生成——生成解决方案,可以看到已经成功生成了解决方案
如果重新启动Windows后连接不上WSL的ssh,需要尝试重启 SSH 服务器(在 Ubuntu 上命令为
sudo service ssh restart
)
从Windows terminal 进入Ubuntu子系统,进入项目文件夹
cd ~/projects/[项目名称]
# 本文中为 cd ~/projects/cppwsl
进入执行文件生成目录
cd ~/projects/[项目名称]/bin/x64/Debug
# 本文中为 cd ~/projects/cppwsl/bin/x64/Debug
运行执行文件,输出问好。
注:Visual Studio 的 GDB 调试程序可以用于打断点调试,功能很强大。
但最好不要直接用于执行文件,有些函数不一定能执行出来。
执行文件还是老老实实进入Debug
目录,手动执行