前言
AI是这两年很火的话题, 关于AI是否会取代程序员话题的讨论喋喋不休, 或许未来某一天程序员真的会被"取代", 但重要的是最先被取代的一定是不会使用AI作为提升开发效率工具的程序员, 那么cursor作为其中风头正盛的AI 编程工具, 基于原生vscode的开发, 可以一键导入配置, 无痛从vscode转移到cursor进行编程, 经过本人1个多月的使用测试, 认为它不止能用来做传统互联网(java、vue、js...)的编程, 用在嵌入式行业依旧合适.... 因为它的智能提示实在是太精准!
如果想用它来做嵌入式开发, 无论是linux应用/驱动 Or 单片机 统统拿捏, 相比source Insight和VS code优势巨大, 如果你用过vscode中的AI插件, 然后使用这个工具, 就会体验到真正的差距! 但是有个大前提: 它是收费的, 且价格不菲
提示: 可以某鱼某多某宝买, 我个人买的是是30天 23米, 相比官网太便宜了
阅读Linux源码
为了快速上手, 我这里以韦东山的教程为例, 省去中间复杂的环境搭建环节
百问网已经制作好了完备的Ubuntu镜像,可以从这里下载:
链接:https://pan.baidu.com/s/1vw4VUV_Mvt0HXz8IC66ACg
提取码:iftb
unbuntu上的操作
- 安装基本开发工具
git clone https://e.coding.net/weidongshan/DevelopmentEnvConf.git
cd DevelopmentEnvConf
sudo ./Configuring_ubuntu.sh
- 安装bear
sudo apt install bear
- 下载和编译内核
下载内核, 执行如下命令:
git clone https://e.coding.net/codebug8/repo.git
mkdir -p 100ask_imx6ull-sdk && cd 100ask_imx6ull-sdk
../repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.xml --no-repo-verify
../repo/repo sync -j4
配置工具链:
vi ~/.bashrc
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
source ~/.bashrc
编译内核:
vscode的clangd插件使用compile_commands.json文件来生成索引文件,这样当我们点击某个函数时
可以飞快跳转到它定义的地方。
compile_commands.json文件中记录的是每个文件的编译选项,样式如下:
"arguments": [
"arm-buildroot-linux-gnueabihf-gcc",
"-c",
"-Wp,-MD,init/.main.o.d",
"-nostdinc",
"-isystem",
"/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/7.5.0/include",
"-I./arch/arm/include",
"-I./arch/arm/include/generated/uapi",
"-I./arch/arm/include/generated",
"-I./include",
"-I./arch/arm/include/uapi",
"-I./include/uapi",
"-I./include/generated/uapi",
"-include",
"./include/linux/kconfig.h",
"-D__KERNEL__",
"-mlittle-endian",
"-Wall",
"-fno-dwarf2-cfi-asm",
"-fno-omit-frame-pointer",
"-o",
"init/.tmp_main.o",
"init/main.c"
],
"directory": "/home/book/100ask_imx6ull-sdk/Linux-4.9.88",
"file": "init/main.c"
},
我们使用bear命令来生成compile_commands.json,它的用法如下:
bear make [其他make本身的参数]
它会记录make过程编译文件时用到的命令。
所以我们编译内核的目的是生成compile_commands.json,执行如下命令:
cd /home/book/100ask_imx6ull-sdk/Linux-4.9.88
make 100ask_imx6ull_defconfig
bear make zImage -j4
如果你之前曾经编译过内核但是没有在前面使用bear命令,那么需要重新编译:
make clean
bear make zImage -j4
- 编译完成
编译成功后就会在当前目录下得到文件compile_commands.json,需要如下修改:
在gedit中使用快捷键"Ctrl+H"即可如下操作:
Windows上的操作
大部分截图都用参考文档里的, 界面显示是vscode, 因cursor是基于vscode原生开发的, 操作是一样的
- 安装cursor
- 在插件市场安装如下插件。
C/C++
C/C++ Extension Pack
C/C++ Snippets
Clangd
Remote SSH
Code Runner
Code Spell Checker
vscode-icons
compareit
DeviceTree
Tabnine AI Autocomplete
Bracket Pair Colorization Toggler
Rainbow Highlighter
高亮文字:shift + alt + z
取消高亮:shift + alt + a
Arm Assembly
Chinese
Hex Editor
One Dark Pro
Markdown All in One
Markdown Preview Enhanced
- 远程登录服务器, 也就是ubuntu开发环境
安装好插件后,即可远程登录服务器,如下操作:
- 在服务器上安装插件
连接上服务器后,查看本地插件,发现有如下字样的插件就点击"Install in SSH"
安装完后,可以如下图查看,确保远程服务器上已经有了clangd插件:
- 配置clangd
前面只是安装clangd插件,它的使用还需要一个运行在Linux服务器上的clangd程序。
我们以后使用cursor打开C文件时,会提示你安装clangd程序,它会安装最新版本(版本15),但是这个
版本有一些Bug,所以我们手工安装版本13。
在Ubuntu中使用浏览器打开https://github.com/clangd/clangd/releases/tag/13.0.0,下载Linux安装
包:
把下载到的clangd-linux-13.0.0.zip放到/home/book目录下,执行解压命令:
cd /home/book
unzip clangd-linux-13.0.0.zip
在Windows的cursor界面按下图步骤打开setting.json文件(下图为vscode, cursor点击文件->首选项即可):
在setting.json中写入如下内容(我们第1次打开源码目录后,这个文件可能被自动修改,你需要再次修改它):
{
"clangd.path": "/home/book/clangd_13.0.0/bin/clangd",
"C_Cpp.default.intelliSenseMode": "linux-gcc-arm",
"C_Cpp.intelliSenseEngine": "Disabled",
"clangd.arguments": [
"--compile-commands-dir=${workspaceFolder}",
"--background-index",
"--completion-style=detailed",
"--header-insertion=never",
"-log=info"
],
}
使用cusor阅读源码
确保Ubuntu上Linux内核源码目录下已经有了文件compile_commands.json。
- cursor已经连接到Ubuntu后,如下操作:
- 触发clangd建立索引
在vscode里打开任意一个C文件,就会触发clangd建立索引:
- 验证cursor阅读源码
CTRL+鼠标左键点击可以跳转到原型
使用cursor做驱动开发
- 在Linux内核根目录随便创建一个test文件夹并创建test.c文件, 验证函数原型的跳转和智能提示
总结:
我个人在开发过程中使用过 source Insight、VS code + Github Copilot或各种AI插件、字节开发的AI编程工具Trae, 依旧觉得cursor是最好用的, 我在用vscode的AI插件一段时间之后, 就把智能提示关闭了… 如果不想花钱的话, 那么cursor有新用户体验两周, 其实各个电商平台上的cursor账号买的这么便宜, 都是无限申请新用户账号, 你懂得