wsl日渐成熟,使用wsl搭建开发环境,避免虚拟机资源占用.
WSL简介
适用于 Linux 的 Windows 子系统(英语:Windows Subsystem for Linux,简称WSL)是一个为在Windows 10和Windows Server 2019上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。
安装
使用管理员权限打开powershell,执行以下命令.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
在microsoft store搜索ubuntu,安装即可.
也可选择商店中的其他版本.
安装完成后直接打开ubuntu程序,或在命令行输入ubuntu均可开始初始化,初始化完成后输入用户名和密码.
wsl设备名和windows相同,不能单独修改.
ssh服务打开
- 在wsl中重新安装ssh-server(所有教程都这么推荐).
- 手动修改配置文件,允许密码登录(默认只支持ssh-key登录).可能需要修改端口.
- 启动服务.
sudo apt-get remove openssh-server sudo apt-get install openssh-server sudo vi /etc/ssh/sshd_config # PasswordAuthentication yes # 允许用户名密码方式登录 sudo service ssh restart
文件共享
在wsl中可以用过 /mnt/c /mnt/d等目录直接访问windows目录.
在windows中可以通过C:\Users{你的用户名}\AppData\Local\Packages{Linux发行版包名}\LocalState\rootfs访问wsl的根目录.
安装vscode
可以下载deb包或添加微软库来安装
网络不好的话下载deb包比较快.
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install code # or code-insiders
sudo apt-get install libasound2 #dont't know why
安装settingsync,输入token和gist id.完美.
安装gcc等开发工具
sudo apt install gcc g++ clang cmake
在windows中使用vscode调试wsl中的可执行文件
炫技一般的行为,实际作用堪忧.
- 修改c++插件设置,让vscode的c++插件可以直接到wsl的头文件目录进行Intellisense.
- 修改工作去设置,让工作区的默认终端是wsl中断.
- 修改调试设置,让vscode可以使用wsl的gdb等可执行程序进行调试.
- 下载libc库,放到特定目录(C:/build/glibc-OTsEL5)
c_cpp_properties.json
{
"configurations": [
{
"name": "WSL",
"intelliSenseMode": "gcc-x64",
"compilerPath": "/usr/bin/gcc",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"LOCAL"
],
"cStandard": "c11",
"cppStandard": "c++14"
}
],
"version": 4
}
settings.json
{
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\wsl.exe",
"files.associations": {
"iostream": "cpp"
},
}
launch.json 其中sourceFileMap中每个磁盘都需要添加一次转换.
pipeProgram目录确实是空的,但是微软表示就得是这个.
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) WSL Launch",
"type": "cppdbg",
"request": "launch",
"program": "/mnt/d/code/hello/build/hello",
"args": [],
"stopAtEntry": true,
"cwd": "/mnt/d/code/hello/build",
"environment": [],
"externalConsole": true,
"windows": {
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
"pipeTransport": {
"debuggerPath": "/usr/bin/gdb",
"pipeProgram": "C:\\Windows\\sysnative\\bash.exe",
"pipeArgs": [
"-c"
],
"pipeCwd": ""
},
"sourceFileMap": {
"/mnt/c": "c:\\",
}
},
]
}
libc库
我的版本
参考链接:
下篇终端美化