首页 > 系统相关 >VSCode阅读Linux源码(35)

VSCode阅读Linux源码(35)

时间:2022-10-04 19:33:35浏览次数:77  
标签:commands VSCode 35 compile 编译 json 源码 linux

环境

经测试在以下环境上编译成功或编译失败:

  • Ubuntu 2004 LTS(非虚拟机,真实系统),Ubuntu 2204 LTS(VMware虚拟机)环境上编译成功
  • Ubuntu 2004 LTS(Hyper-V系统),Ubuntu 2204 LTS(Hyper-V系统)环境上编译失败

注意:
若编译环境是VMware虚拟机,则最好把源码包拷贝到Linux虚拟机的磁盘上(例如拷贝的/home目录下)编译,而不是直接挂载Win10的磁盘,然后在挂载盘上编译。一是因为在挂载盘上编译慢,二是因为在挂载盘上解压后可能会导致有些文件的权限是???,导致编译过程中无法访问文件,进而导致编译失败。

步骤

参考资料:

  1. ubuntu(20.04)+linux内核(5.17.3)编译内核
  2. Read Linux Kernel With CLion

这里以“linux-5.10.83”源码为例,且以下操作都在**root**用户下进行。

1、Ubuntu安装编译环境

apt install libncurses5-dev openssl libssl-dev build-essential openssl pkg-config libc6-dev bison flex libelf-dev zlibc minizip libidn11-dev libidn11 dwarves

2、下载“linux-5.10.83”源码并解压

3、净化源码

make mrproper

4、配置要进行编译的内核

 cp /boot/config-`uname -r`  ./.config
 make menuconfig

依次点击“Load > (.config)OK > SAVE > (.config)OK > EXIT > EXIT”。
image.png

5、修改上一步生成的配置文件

vim .config

只修改其中的几个字段,修改后这几个字段的状态如下:

  • CONFIG_MODULE_SIG_KEY=""
  • CONFIG_SYSTEM_TRUSTED_KEYS=""
  • CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""(这个字段本来就是空的,若不是空的,则置为空)
  • CONFIG_SYSTEM_REVOCATION_KEYS=""

即,把这几个字段都变成空的。这几个字段位置相近。

6、编译内核

make bzImage -j16    # -j16代表用16个线程同时编译,编译速度更快,线程数量根据处理器实际情况配置

编译完也不显示什么,直接就完了,编译完成后显示的状态:
image.png

7、编译模块

 make modules -j16

编译完也不显示什么,直接就完了,编译完成后显示的状态:
image.png

8、生成compile_commands.json

./scripts/clang-tools/gen_compile_commands.py

9、参考如下文章用VSCode阅读Linux源码:《VSCode + WSL + clangd +CMake + CMake Tools搭建C++开发环境》
若源码是在服务器上编译的,可以把compile_commands.json下载到本地的linux-5.10.83源码目录中,然后把compile_commands.json里边的路径替换成本地真实路径,一样可以用clangd解析。
因为compile_commands.json是在服务上编译的,里边涉及到路径的字段肯定是服务器上的路径,下载后替换成本地路径即可。
compile_commands.json是编译过程中生成的,记录了代码编译的详细过程,因此clangd解析这个文件就可以分析出代码之间的关系了。clangd分析只依赖compile_commands.json文件,不依赖编译过程中的中间产物。

10、这里提供如下附件:

  • linux-5.10.83.tar.gz:linux-5.10.83源码包
  • linux-5.10.83-compiled.tar.gz:编译后的代码
  • compile_commands.json.tar.gz:编译后生成的compile_commands.json

标签:commands,VSCode,35,compile,编译,json,源码,linux
From: https://www.cnblogs.com/sinicheveen/p/16754280.html

相关文章

  • 从vue源码中学习观察者模式
    摘要:源码解读设计模式系列文章将陆陆续续进行更新中~摘要:源码解读设计模式系列文章将陆陆续续进行更新中~观察者模式首先话题下来,我们得反问一下自己,什么是观察者模式?......
  • 源码角度了解Skywalking之建立连接与服务注册
    源码角度了解Skywalking之建立连接与服务注册这篇文章主要讲一下Agent与OAP建立连接并进行服务注册。从SkyWalking的启动流程SkyWalkingAgent的premain()中我们了解到调用......
  • 源码角度了解Skywalking之Trace信息的生成
    源码角度了解Skywalking之Trace信息的生成TraceId是分布式链路的一个信息,可以通过它定位一条链路TraceId的生成Skwalking的TraceId的生成是通过GlobalIdGenerator的gener......
  • 从vue源码中学习观察者模式
    摘要:源码解读设计模式系列文章将陆陆续续进行更新中~摘要:源码解读设计模式系列文章将陆陆续续进行更新中~观察者模式首先话题下来,我们得反问一下自己,什么是观察者模式......
  • 力扣 350. 两个数组的交集 II
     力扣官方题解里的双指针+排序方法里,最后return的值是  Arrays.copyOfRange(intersection,0,index)这里为什么不能直接返回intersection数组:如果定义的数组interse......
  • 项目开发神器VsCode配置指南!(含C++、Python、Java环境配置)
     Datawhale干货 作者:吴忠强,东北大学,Datawhale成员本篇文章虽然是VsCode挂名,但其实介绍了两款神器:Vscode和Vim,这两个结合起来,开发效率蹭蹭蹭!!!之前接触过VsCode但很少......
  • 118-22-ZooKeeper 基础设施详解 和 服务启动流程源码分析_ev
         ......
  • PCA算法介绍及源码实现
    前言PCA(主成分分析)是十大经典机器学习算法之一。PCA是Pearson在1901年提出的,后来由Hotelling在1933年加以发展提出的一种多变量的统计方法。PCA算法介绍PCA(principalc......
  • 源码、反码、补码和精度损失
    数据类型转换,转换过程中可能导致溢出或损失精度1.源码:源码就是二进制的数字并且开头的一位代表符号位。例:(+1)的源码:00000001(-1)的源码:100000012.反码:正数......
  • vscode vim keybinds.json vscode的按键配置
    vscode的keybindings.json//Placeyourkeybindingsinthisfiletooverridethedefaultsauto[][//以前配置的上下左右移动按键{"key":"alt+j","......