使用Windows自带Linux子系统WSL为Clion配置运行环境及项目执行

终于有点时间把Windows下的Clion折腾的能够直接跑起来Linux下的的C/C++项目。本文内容主要参照了Azraelcc的使用CLion和Linux子系统在Windows10系统中开发C/C++程序 的部分操作。

本文主要面向的是已有的Linux Cmake项目的部署执行,调试修改,不是自己创建环境后新建项目,不过也是可行的。

1.  简单介绍

因为我搬项目到windows的时候,Ubuntu 20 已经推出了,所以在windows商店可以直接选择最新的版本。

有一说一,Ubuntu20的界面和功能改进了很多,相比起之前的版本很舒服。不过虚拟机下的总归是无法完全利用电脑的性能,比如我目前的项目一个单元测试,就要跑20分钟,对大规模数据的处理虽然能够撑起来,但是总感觉很吃力。

所以,干脆直接搬到windows上的Clion跑。但最困难的事情是,手头的项目,所有的Cmake文件全部是基于Linux内部的动态库,Windows的Clion甚至连 ./configure.sh都不能完全配置成功,Powershell虽然支持Linux的命令行,但是却总归不能指望也能用sudo apt-get来安装工具和缺失的动态库吧。

这个时候,WSL就为这种情况提供了一个相对完美的解决方案,你可以只利用子系统来为Clion提供Linux的运行环境,编译工具,各种动态库。而不必特别配置Linux的操作界面以及别的乱七八糟的软件。如果你非常喜欢Linux的话,大可以再配置一台略渣的电脑作为Linux本。WSL的好处就在于,它不太吃资源,你完全安装,配置好所有的运行环境,编译器,加起来也就不到3GB,而且最大的好处就在于它省去了虚拟机的资源,以及完全利用机器的硬件资源。就和你在windows进行一般的开发没有任何区别,无非就是用的时候把SSH的服务打开,我不喜欢计划任务,所以用的时候才打开,也不费事,就是一句命令行,然后就打开Clion开发就行了。

废话结束,简单说说这篇文章做与不做的事情

这篇文章不做的事情:

1. Windows下的Clion的安装

2. Windows自带子系统的安装

这两个安装只需要默认安装就可以了,不需要做任何额外的配置,需要做的任何配置都在后边。而且网上的教程已经非常丰富完善了,也可以参考引言的博文链接,不再赘言。

这篇文章的事情:

1. Linux配置SSH

2. Linux必备安装的编译工具

3. Clion的配置

4. 运行项目

2. 配置SSH

在参考的博文中已经很详细了,但有的部分在Ubuntu 20 中并不需要配置,而且第一次安装,SSH服务配置文件全部都是注释掉的,所以这里就根据我遇到的情况介绍一下:

给新手提示:使用Vi编辑文档的时候,最初进去是初始模式,无法添加内容,点击“i”可以转换到插入模式,然后可以编辑文档,进行插入删除。然后Esc退出插入模式,回到初始模式,如果已经完成了编辑," Ctrl + : " 然后进入命令行模式,如果因为操作不当,改错了,而且无法修改的情况,就在命令行模式输入 q! , 强制退出,不保存。 如果完美更改,就输入 wq 保存后退出。 想了解更多,可以网上找找教程,蛮多的。

1.备份原文件:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk

2.修改ssh配置文件:

sudo vi /etc/ssh/sshd_config

3.编辑调整以下 ssh 相关的设置项,在打开的文件中找下边的每一项

Port 22                     # 更换端口,原文章修改为8022,一般不会被占用的端口都可以
ListenAddress 0.0.0.0	    # 去掉前面的'#'
UsePrivilegeSeparation no   # 我没有在Ubuntu20中找到这一项,所以可以忽略
PermitRootLogin yes         # 去掉前面的'#' 并修改为yes        
#StrictModes yes            # 在前面加上'#' 这个在Ubuntu20 中本身就是注释掉的,可以忽略
PasswordAuthentication yes

4.生成host key

sudo ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key

5.生成user key

ssh-keygen -t rsa

6.启动ssh服务

sudo /etc/init.d/ssh start

7.验证ssh服务状态

/etc/init.d/ssh status

成功状态:* sshd is running

重启windows后启动Linux SSH服务(CMD命令): 

wsl -d ubuntu -u root /etc/init.d/ssh start

或者

wsl sudo /etc/init.d/ssh start (我用这个是成功开启的)

3. Linux必备安装的编译工具

这一模块,其实没什么好说的,根据个人的项目需要直接在WSL中命令行安装就行了,缺什么安装什么,gcc,cmake,clang,libXXX什么的,非常的方便,所以我们在安装完Clion之后,如果你不打算直接用Clion开发基于windows的项目,我觉着就没必要再在windows上安装gcc,cmake还有mingW,所有的编译环境都由WSL来提供,非常的方便。

另外,配置CLion工具链远程调试Ubuntu子系统程序可以参考引言的博文,第3章节,非常的详细。但是我建议,看到3.2就可以了,3.3没必要继续下去,环境变量和同步我都没有用到,因为我所有的项目完全clone在windows上,没有clone在wsl中,因为个人的原因,在push代码的时候,我会在虚拟机完成,主要需要在虚拟机进行一次匹配,windows直接push会产生一些小问题,尤其是换行问题。这个看个人的需求,目前来说,我机器上运行的项目还是稳定的。

4. 运行项目

这一块需要设置CLion中使用的Terminal为Ubuntu子系统Terminal

通过设置Settings->Tools->Terminal中的Shell Path 为wsl.exe,如果你想切换回windows的Terminal,就改回powershell.exe就可以了。

然后我们就可以使用Linux的命令行直接进行编译,最直接的表现就是我们可以直接使用  ./configure.sh 进行配置,但是!最重要的一点来了,因为我们的源代码在windows下,不是Linux中,中间依然存在通过共享文件夹传递的过程,所以,我们需要在每次命令行之前加上sudo确保可以执行修改(比如,sudo ./configure.sh 或者 sudo make)。这可能是1903版本及之后windows的一个优势,它允许wsl通过sudo对windows文件进行操作修改,不再锁死777权限。

然后基本上剩下的问题就是一些编译工具的问题,库的缺失,但都可以通过命令行直接安装解决问题。

通过cmake我们可以发现,wsl将windows下的源代码,通过共享文件夹的形式(/mnt/d/workspace)进行编译,到此就已经可以进行正常的编译开发,调试修改的工作了。

如果出现别的问题,可真是有点惨以再找找网上的资料,或者不行就虚拟机吧留言也可以,我也不一定回答的出来看到了就回复。祝一切顺利😀

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值