CLion:2024.2.2
引言
初学嵌入式linux开发看的是正点原子的imx6ull教学视频,使用的是VS Code。虽然VS Code的代码补全和界面还可以,也能使用诸如通义灵码等插件,但相比之下,CLion更为出色。
虽然在嵌入式Linux开发里,集成开发环境IDE已经不是那么重要,平时用的最多的是命令行。但是,敲代码时能有一个好的编辑器那是再好不过了,可以极大提高效率、减少错误。CLion则具备了诸如格式化代码、自定义代码样式、强大的代码补全、丰富的插件库、代码检查、集成git、代码洞察等功能,可以极大地改善开发体验。
CLion的安装配置过程可以参考【嵌入式IDE】等博客,可按需查看。
在使用CLion开发时,可以直接在Linux(虚拟机)里面安装一个CLion,可以在主机(Windows)里远程开发。
在Linux里直接安装CLion的话,可以更为直接的使用Linux环境,比如桌面和命令行随时可以切出来。但编译像Linux内核这样的大型项目时,会非常非常地卡,即使我的虚拟机配置的内存是16GB,处理器分配了16个(一共就16个)。
如果是通过远程开发的话,就不容易出现卡顿现象,只不过在使用Linux桌面环境时需要来回切换,除非你有两个显示器可惜的是,目前由于CLion无法正确识别Linux内核项目的Makefile,所以无法使用代码洞察,很难进行自动代码补全,自动代码补全凭通义灵码插件一己之力承担。
长话短说,接下来就讲如何配置SSH来使用远程开发,主要是为了解决在虚拟机里使用CLion编译linux内核源码时容易崩溃的问题。
一、前置条件
- 使用过CLion开发,熟悉开发流程
- 使用过Linux环境开发一些裸机项目(正点原子imx6ull视频教程第一期)
- 配置过VMware虚拟机的网卡
二、基础准备
1,安装SSH:
在Ubuntu里安装open-ssh。
sudo apt update
sudo apt install openssh-server
安装完成后,测试连接情况,一般都是可以正常使用的。此时可以通过按住“Ctrl+C”来停止这个界面(不是停止ssh),以便继续输入命令
sudo systemctl status ssh
如果没有正常工作,可以开启ssh
sudo systemctl start ssh
2,虚拟机网络配置:
最好有一个网卡是NAT模式,这个主要供虚拟机上网。ip地址可以选择自动分配,一般也不大会变动,需要的话可以设置为静止ip。
查看ip地址,下面那个ens37是NAT模式,这里可以选用它作为服务器ip。此外,需注意SSH是一种网络协议,与ftp、http在本质上没有什么差别,都是进行网络通信的,自然需要ip地址。
三、CLion配置SSH
1,前言:
随便创建一个工程,因为主体是在Linux环境里,需要使用Linux的命令行,不需要在本地导入工程。并且由于Linux内核项目的Makefile无法被CLion正确识别,所以无法使用CLion自带的集成工具,比如构建用的小锤子,所以不必配置什么远程工具链
但是配置远程工具链时可以顺带建立部署,一举两得,那么就配置远程工具链
2,配置远程工具链:
配置过程较为简单,先进入如下界面【设置→构建、执行、部署→工具链】
然后点击【凭据】那一行最右边的设置符号,进入下述界面。然后先点击左上角的“+”,字后在右边填上主机、用户名,最后测试连接。
理论上信息没有填错,并且此时虚拟机是开着的状态,那么测试连接时就会出现连接成功的提示信息
配置完成后,不要忘记点击确定。
3,修改路径(可选)
一般来说,我们会把Linux项目目录放在用户下的某个路径,而不是根路径,所以可以把远程连接的根路径改为Linux项目路径
如果前面配置工具链正常的话,会在下面的【部署】里出现如下信息,此时你可以把根路径修改为自己项目的路径,以便下次打开CLion时会自动进入当前目录
四、基础使用
1,文件栏:
配置完成后,还是这样的大白界面,但此时你会发现右侧会多一个远程主机
点击后就会出现项目的文件列表
但这样看起来并不舒服,同时由于不在本地(主机)开发,所以本地的项目也就没有什么作用了。此时,你可以把本地的项目栏收起来,然后把远程主机栏移动到左边。
右击远程主机栏,即可出现移动选项
移动后,就出现了以下界面,此时如果你双击任何一个文件,就会在屏幕右边出现,与本地开发没有什么区别
2,终端:
此时可以右击项目目录,创建SSH会话,其实就是创建一个Linux的终端
下面就会出现一个Linux终端
五、补充
前面主要讲的是使用终端,在Linux开发中,有时也可能在本地开发,然后把工程上传同步到Linux里。
这时,需要用到本地项目栏
然后右键项目的根目录,我这里的项目目录名是linux。然后下面会有部署这个选项,部署的子选项中,有上传、下载、同步等选项。
如果你需要在本地开发,那么可以把Linux项目下载下来,之后如果想同步的话,编辑器上方会出现相应的提示