因为项目需要,所以不得不写一些依赖于第三方库的c++程序,而且第三方库的官方说明中只能在ubuntu系统下编译使用,里面还涉及到cmake,boost等,一些在windows下设置很麻烦的东西。然而。。。对于买了Surface的我,装Win+Linux系统显然变成了一件很奢侈的事情。虚拟机又运行太慢,而且对一些网络方面的开发很不友好。
所以,经过各种搜索尝试,我终于找到了一种可以在windows环境下开发编译linux程序的方法!!!
在1607之后的64位版本的Windows10中提供了一个WSL(Windows Subsystem for Linux)功能,然后我就利用WSL+VS Code+Code Runner在windows上搭建了一个linux开发环境。
经过半年使用,感觉体验甚至超过了在纯Linux下开发。因为WSL去除了GUI,使得系统意想不到的稳定,而且没有虚拟机那恶心的地址桥接、转换,windows的网络通信地址和端口直接可以在WSL上使用,感觉应该可以适用于绝大多数软件开发。
废话不多说,下面就来介绍一下搭建的步骤。
1. 安装WSL,具体教程可以参考官方链接
Install Windows Subsystem for Linux (WSL) on on Windows 10docs.microsoft.com2. 安装VS Code,网址如下
https://code.visualstudio.com/code.visualstudio.com3. 在VS Code中安装Code Runner插件,就是下面这个
插件装好后右上角会有一个三角形图标,这个就是Code Runner编译运行程序的按钮。
4. 把VS Code的默认终端从Power Shell改成为WSL
在VS Code界面按F1,会弹出一个搜索框,输入 Open Settings (JSON) 回车就到设置界面了。
在设置界面中将
"terminal.integrated.shell.windows":"C:WindowsSystem32wsl.exe",
加进去,像下面一样,这样VS Code上的Linux终端就设置好了。
5. 设置插件Code Runner
由于Code Runner默认的设置是为Windows准备的,所以必须把这些在Windows下的编译代码改成linux下的编译代码。
方法同上一步,在 Open Settings (JSON) 中加入以下代码:
{
其中"cpp"后面是c++的编译代码,基本上就是把linux下g++的代码改一下,$fileName表示带后缀的当前的文件名,$fileNameWithoutExt是指不带后缀的当前的文件名。Code Runner的作用只是把自己编辑的代码自动输入到终端中并运行。我给的代码由于要使用boost和pthread所以加了"-lpthread -lboost_system -lboost_filesystem",这里可以根据自己需要增减。
设置保存后,整个环境就搭建完成了,像下面那样,下方的Terminal里面就是一个ubuntu终端,可以肆无忌惮的sudo apt。。。。
如果要编译,则点击一下Code Runner那个三角形按钮(红色圈出部分),就可以编译并运行了,下面来一个"hello world"。
还有一件事,
WSL-Ubuntu 的根目录在C盘下面
C:UsersshenyAppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalStaterootfs
然后我们可以新建一个快捷方式放到桌面,这样直接打开就是Ubuntu的空间了,如果要下载什么东西直接往里拖就行,十分方便。