内核源码+vscode+bear+clang实现函数任意跳转,无缝跳转,无缝阅读,无缝开发
一、准备工作1、内核源码版本选择
务必有一份能编译通过的《内核源码》,本次选择5.10版本的。
#说明:5.10版本的《内核源码》里,在 scripts/clang-tools 目录下有《gen_compile_commands.py》文件,这个脚本也能生成《compile_commands.json》文件。已确定4.19版本没有,请尽量选择高版本的内核源码。2、VScode
2.1、安装 Clangd 插件,确保安装到已经远程连接的虚拟机里。
以下简称:VSC
经过别的文章提示,建议务必禁止vsc插件为:<C/C++ Extension>。
二、clang+bear
2.1、安装bear
sudo apt-get install -y bearbear --version #验证bear有无安装好,出现版本号则正常2.2、内核源码目录操作
进入该内核源码目录
bear make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- rockchip_linux_defconfig#或者用下面这个bear make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- rockchip_defconfigbear make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- -j82.3、产物
会在kernel文件夹下生成 compile_commands.json 文件。
2.4、VSC操作
直接打开你的vscode,用vsc仅仅打开内核源码所在目录,然后任意点击一个C代码文件将触发clang,在VSC的 终端 页码里点击“输出”,然后选择“clangd”,即可看到触发clang的过程。同时,在VSC的左下角将看到类似如下提示:
# 数字可以不是下面所写的,仅供案例参考<转圈> indexing:98/3695当索引结束,即可使用。
2.5、工程目录操作
复制一份 compile_commands.json 文件到当前工程目录下即可。
<hr>三、clang+源码内置脚本
3.1、内核源码目录操作
1.1、进入该内核源码目录,弄配置文件
make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- rockchip_linux_defconfig 1.2、进入该内核源码目录,编译内核源码
make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- -j83.2、产物
# 在内核源码所在目录下执行:python scripts/clang-tools/gen_compile_commands.py# 生成 compile_commands.json 文件3.4、VSC操作
直接打开你的vscode,用vsc仅仅打开内核源码所在目录,然后任意点击一个C代码文件将触发clang,在VSC的 终端 页码里点击“输出”,然后选择“clangd”,即可看到触发clang的过程。同时,在VSC的左下角将看到类似如下提示:
# 数字可以不是下面所写的,仅供案例参考<转圈> indexing:98/3695当索引结束,即可使用。
3.5、工程目录操作
复制一份 compile_commands.json 文件到当前工程目录下即可。
<hr>四、参考文档
1、《【vscode基于clangd实现Android/Linux代码跳转】》
https://huaweicloud.csdn.net/654861dd91098a1041274b84.html
2、《看代码神器:vscode+clangd轻松实现linux内核代码跳转(图文并茂)》
https://blog.csdn.net/ludaoyi88/article/details/135051470
3、《VSCode+clangd阅读linux内核源码》
https://blog.csdn.net/weixin_40209493/article/details/128175003?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-128175003-blog-135051470.235v43pc_blog_bottom_relevance_base5&spm=1001.2101.3001.4242.1&utm_relevant_index=1
页:
[1]