Windows10 Linux开发环境搭建(WSL)

一、WSL初始化

从Windows引用商店搜搜Linux,下载Ubuntu(可选18.04或者20.04都可),下载完成后开始菜单点击安装,会要求初始化用户名和密码。

二、创建root用户

后续操作需要root权限,Ubuntu默认是没有root用户的,需要先手动创建

sudo passwd root
输入密码

三、更改阿里云下载镜像

这一步非常重要,可以极大提升用户体验,从阿里开源镜像站复制对应下载源,然后按这个步骤操作:https://blog.csdn.net/Mingzhul/article/details/105302399

注意先备份再修改,养成良好操作习惯。

四、安装vscode

随着时代的进步,这一步的操作貌似有几种方式,应该都可以吧

  1. 可以参考这个,编译安装VSCode:https://blog.csdn.net/reeeeein/article/details/104628415
  2. 或者直接通过 Remote-WSL 直接启动:https://blog.csdn.net/weixin_43876113/article/details/105261577 ,不知道是不是我已经用第一步安装了的原因,这样的确是可行的
  3. 从官网下载VSCode Linux安装包安装,我觉得这种比较通用,步骤如下:

这一步需要首先在Windows上安装好VSCode及 Remote-WSL插件,现在有 C/C++ Extension Pack 插件,可以装一大堆C++开发的插件,其中就有这个。 然后从VSCode官网下载Ubuntu的.deb安装包,比如放到D盘,然后拷贝到home目录下(以root用户操作):

cp /mnt/d/code_1.62.0-1635954068_amd64.deb ./

注意:WSL和Windows通过 /mnt/win磁盘路径 共享磁盘,然后安装:

dpkg -i code_1.62.0-1635954068_amd64.deb

这样就再wsl上安装好了VScode,在其他Linux上都可以这么操作,万能的VSCode,然后切换到代码目录,例如在 /home/testcode 目录下,VScode可以运行命令启动(也可直接在Windows中用Remote-WSL连接启动,区别在于启动后工作空间名字不一样...):

cd /home/testcode
code .

这样就会在Windows上的VScode中远程打开当前 testcode 目录。

五、C++开发配置

最后就是一些构建配置,在工程目录下的 .vscode 目录下,一般来说这个目录和需要的文件会由VSCode自动生成,需要了解其含义,适当手动修改:

C++工程配置 c_cpp_properties.json,会在直接运行项目时用到:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [  // 头文件查找路径
                "${workspaceFolder}/**",
                "../include"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "clang-x64",
            "configurationProvider": "ms-vscode.cmake-tools"
        }
    ],
    "version": 4
}

gdb调试配置 launch.json ,会在F5执行调试时用到:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",          //启动配置的下拉菜单中显示的名称
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bin/testServer",   // 将要进行调试的程序的路径
            "args": [],
            "stopAtEntry": false,                        // 设为true时程序将暂停在程序入口处
            "cwd": "${workspaceFolder}/bin",        // 调试程序时的工作目录
            "environment": [],
            "externalConsole": false,                   // 调试时是否显示控制台窗口
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build-debug"                        // 调试会话开始前执行的任务,一般为编译程序
        }
    ]
}

settings.json,这个不知道有什么用,貌似与用到的库有关:

{
    "files.associations": {
        "functional": "cpp",
        "initializer_list": "cpp",
        "array": "cpp",
        "atomic": "cpp",
        "*.tcc": "cpp",
        "cctype": "cpp",
        "clocale": "cpp",
        "cmath": "cpp",
        "cstdarg": "cpp",
        "cstdint": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cstring": "cpp",
        "ctime": "cpp",
        "cwchar": "cpp",
        "cwctype": "cpp",
        "deque": "cpp",
        "list": "cpp",
        "unordered_map": "cpp",
        "vector": "cpp",
        "exception": "cpp",
        "fstream": "cpp",
        "iosfwd": "cpp",
        "iostream": "cpp",
        "istream": "cpp",
        "limits": "cpp",
        "new": "cpp",
        "ostream": "cpp",
        "numeric": "cpp",
        "sstream": "cpp",
        "stdexcept": "cpp",
        "streambuf": "cpp",
        "cfenv": "cpp",
        "tuple": "cpp",
        "type_traits": "cpp",
        "utility": "cpp",
        "typeinfo": "cpp",
        "memory": "cpp",
        "forward_list": "cpp",
        "string": "cpp"
    },
    "cmake.configureOnOpen": true
}

tasks.json ,构建任务配置,配置了一些 make 参数

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build-release",
            "command": "make",
            "args": [
                "-j4",
                "-C",
                "${workspaceFolder}/build/" 
            ],
            "type": "shell",
            "problemMatcher": [
                "$gcc"
            ]
        },
        {
            "label": "build-debug",
            "command": "make",
            "args": [
                "-j4",
                "-C",
                "${workspaceFolder}/build/"
            ],
            "type": "shell",
            "problemMatcher": [
                "$gcc"
            ]
        },
        {
            "label": "clean",
            "command": "make",
            "args": [
                "-C",
                "${workspaceFolder}/build/",
                "clean"
            ],
            "type": "shell",
            "problemMatcher": [
                "$gcc"
            ]
        }
    ]
}

六、升级到WSL2

WSL1与WSL2的区别,参考:

window10将wsl升级到wsl2
WSL1升级至WSL2

注意:升级WSL2后将用不了VMWare,虚拟机平台不能共存

posted @ 2021-11-10 14:52  姬无华  阅读(143)  评论(0编辑  收藏  举报