用windows10的linux子系统在visual studio2019中用C语言开发linux项目

用windows10的linux子系统在visual studio2019中用C语言开发linux项目

要在 Windows 10 上使用 Linux 子系统 (WSL) 配合 Visual Studio 2019 开发 Linux C 语言项目,核心是通过 VS 的"Linux 开发"功能连接并调用 WSL 环境中的 GCC 工具链进行编译和调试。

整个流程可以分为环境准备、集成配置和项目开发三个阶段,下图清晰地展示了主要的操作路径:

第一步:搭建基础环境

这是后续所有工作的基础,你需要安装WSL和相应的V

1、安装并配置 WSL

  • 启用功能 :以管理员身份打开 PowerShell 或命令提示符,输入 wsl --install 并重启电脑。这个命令会启用必要的Windows功能并安装默认的Ubuntu发行版。

  • 选择发行版 :你也可以通过 wsl --list --online 查看可用发行版列表,并使用 wsl --install -d <发行版名称> 安装特定版本。

  • 初始设置:安装后,从开始菜单启动 Ubuntu,系统会提示你创建专用的 Linux 用户名和密码

可参考:在 Windows 上安装 Linux_适用于 linux 的 windows 子系统-CSDN博客

2、安装 Visual Studio 2019 组件

  • 打开 Visual Studio Installer,找到你的 VS2019 实例,点击"修改"。

  • 在工作负载选项卡中,确保勾选 "使用 C++ 的桌面开发"

  • 最重要的是,必须勾选 "使用 C++ 的 Linux 开发""使用 C++ 的跨平台开发" 工作负载。这个组件提供了与远程系统(包括WSL)连接、编译和调试所需的工具。

可参考:在 Visual Studio 中安装 C++ Linux 工作负载-CSDN博客

第二步:在 Visual Studio 中配置 WSL 连接

环境准备好后,需要让 VS 知道如何连接 WSL。

1、启动 Visual Studio 2019

启动 Visual Studio 2019, 打开菜单栏的 "工具" --> "选项"--> "跨平台" --> "连接管理器"

2、添加 "跨平台连接管理器"

点击 "添加" 按钮。此时,如果你的 WSL 已正确安装,在"主机名"或"连接目标"的下拉列表中,通常可以直接选择你的 WSL 发行版(例如 Ubuntu)。这与连接远程Linux服务器不同,无需手动输入IP地址。

3、连接**"跨平台管理器"**

点击连接 ,根据提示输入你首次启动WSL时设置的Linux用户名和密码即可完成认证。

关键配置步骤

cpp 复制代码
主机名: localhost
端口: 22
身份验证类型: 密码
用户名: <你的 WSL 用户名>
密码: <你的 WSL 密码>

第三步:创建项目

常见的问题:

1、点击连接后,连接配置 localhost:22 报红

在VS2019中连接WSL时,如果填写 localhost:22 并"报红",说明SSH连接无法建立。这通常是WSL内的SSH服务未正确运行或配置导致的,我们可以按以下步骤排查解决。

先打开WSL终端(如Ubuntu),执行下面这些检查。

第一步:基础检查与关键配置

1、检查并安装SSH服务

输入 sudo service ssh status。如果显示"not running"或"inactive",说明SSH服务没运行。运行以下命令来安装和启动它:

bash

bash 复制代码
sudo apt update && sudo apt install openssh-server -y
sudo service ssh start

如果已安装但启动失败,可能需要先卸载再重装(sudo apt remove openssh-server 后再安装)。

2、检查SSH服务端口监听

运行 sudo ss -tunlp | grep sshd 或 sudo netstat -tunlp | grep ssh 。正常情况会看到0.0.0.0:22 或 127.0.0.1:22 。如果看到的是**:::22 (IPv6地址)**,可以在下一步配置中强制使用IPv4。

3、修改SSH服务器配置(关键)

编辑配置文件:sudo vim /etc/ssh/sshd_config ,确保以下参数正确,修改后需要重启SSH服务(sudo service ssh restart

  • Port 22 :确保该行没有 被注释(即行首没有#)。

  • PasswordAuthentication yes :确保该行没有被注释,允许使用密码认证。

  • PermitRootLogin yes:这一行可以根据需要设置,如果使用普通用户连接可保持默认。

  • ListenAddress 0.0.0.0:可以添加这一行(或确保未被注释),让SSH服务监听所有网络接口,包括对Windows主机的连接。

4、解决可能的主机密钥问题

如果SSH服务启动时报错"Could not load host key",说明密钥文件缺失。可以运行以下命令生成:

bash

bash 复制代码
sudo ssh-keygen -A

然后再次尝试启动SSH服务。

第二步:解决特殊网络环境问题

完成基础配置后,如果问题依旧,可能和你的网络环境有关。

  • 情况一:使用了网络代理

    如果Windows系统设置了全局代理,WSL启动时可能会提示"检测到 localhost 代理配置,但未镜像到 WSL"。

    • 如果你需要WSL使用代理 :在Windows用户目录(如C:\Users\<你的用户名>\)下创建或编辑 .wslconfig 文件,添加以下内容并重启WSL(wsl --shutdown):

      ini

      bash 复制代码
      [experimental]
      autoMemoryReclaim=gradual
      networkingMode=mirrored
      dnsTunneling=true
      autoProxy=true
    • 如果你不需要WSL使用代理:可以忽略该警告,或关闭Windows的全局代理设置后再试。

  • 情况二:端口冲突或防火墙问题

    这是相对少见的原因,但如果前述步骤无效,可以检查:

    • 端口冲突 :Windows本机是否运行了其他占用22端口的服务(如其他SSH服务器)。可以尝试在WSL中修改sshd_config里的Port为其他端口(如2222),并在VS2019中相应更改端口号。

    • 防火墙 :通常情况下,Windows防火墙对localhost(127.0.0.1)的连接是放行的。如果怀疑防火墙问题,可以临时关闭防火墙测试,但不建议长期关闭。

第三步:在VS2019中重新连接

完成上述步骤并确保WSL内的SSH服务正常运行后,回到VS2019的**"工具"->"选项"->"跨平台"->"连接管理器"**。

点击"添加",这次在"主机名"处可以尝试直接填写 127.0.0.1 (而不是localhost),端口填写你配置的端口(默认22),然后输入你的WSL用户名和密码进行连接。

核心是确保WSL内部的SSH服务(openssh-server)已正确安装、配置并运行起来。 绝大多数"报红"问题都出在这里。建议你从第一步开始逐一检查,并在每一步之后尝试重新连接。

2、

3、

相关推荐
xujiangyan_2 小时前
k8s中的pod管理及其优化
linux·容器·kubernetes
知识分享小能手2 小时前
Ubuntu入门学习教程,从入门到精通, Ubuntu 22.04 用户和组管理指南(8)
linux·学习·ubuntu
随风语2 小时前
ansible
运维·自动化·ansible
脏脏a2 小时前
【Linux】进程地址空间
linux·运维·服务器·进程地址空间
旖旎夜光2 小时前
Linux(5)(下)
linux·学习
无泪无花月隐星沉2 小时前
uos server 1070e部署Hadoop
大数据·运维·服务器·hadoop·分布式·uos·国产化os
tianyuanwo2 小时前
纵深防御:构建安全高效的 Ansible 自动化运维体系
运维·安全·ansible
努力的小帅2 小时前
Linux_进程间通信(Linux入门到精通)
linux·c++·centos·共享内存·进程通信·命名管道·管道的学习
齐鲁大虾2 小时前
Linux 系统上的开发 C/S 架构的打印程序
linux·c语言·架构