Windows 系统如何高效搭建 Linux 开发环境,一步步解锁内核源码

每日禅语

人闲桂花落,夜静春山空。月出惊山鸟,时鸣春涧中。人人皆以为王维只是在写自然界景物的美丽,其实这首诗不只体现了自然界的美丽,更是诗人内心的写照,体现了诗人心中禅心与禅境的完美结合。这首诗的境界之所以如此静谧、寂远,原因在于诗人心无挂碍,眼中只有山间花落、月出、鸟鸣融为一体的美丽,不见人生的烦恼。很多禅修之人,修行了几十年,仍无法达到自悟的程度,这是因为他们受到俗世的羁绊,心生浮躁之气,缺少清净、纯洁的安详。

文章背景

 内核工作原理:通过阅读源码,你可以更深入地了解 Linux 内核的工作方式。例如,调度器、内存管理、文件系统、网络栈等的实现细节,帮助你理解系统如何在不同硬件和软件环境下高效运行。

多任务处理:Linux 内核是一个多任务的操作系统,理解调度算法、进程管理、线程管理等,有助于编写高效、稳定的应用程序。

Linux内核是我们程序员的内功,虽然它不能教会我们最新的开发语言,不教会你时髦的框架,也不会带你走进火热的人工智能,但是我相信它是我们成为“大牛”的必经之路。

文章约定

本文所有的搭建都是基于Linux3.10版本操作和下载,后续的阅读和源码解析都是基于此版本操作的 

Linux源码下载

Linux官网

下载指定版本的Linux版本

linux指定版本下载链接

 我这里下载的是linux-3.10.10.tar.gz

源码阅读工具

linux下载以后,使用一个好的工具来阅读源码可以得到事半功倍的效果。Source Insight 是 Source Dynamics 公司出品的源代码编辑器。Source Insight 提供语法突出显示,代码导航和可自定义的键盘快捷键。它不仅仅是一个编辑器,而是一个理解大型源代码库的工具,因此被称为“程序编辑器和分析器”。它灵活轻便,提供有用的功能,如关系,上下文和符号窗口。它在建源码工程时,构建了符号信息的内部数据库,所以还可以显示引用树,类继承图和调用树。它的最大好处是加快了对不熟悉项目的代码理解。

 Source Insight工具安装

参考网址:

  • 官网主页 https://www.sourceinsight.com/
  • 软件下载页面https://www.sourceinsight.com/trial/
  • 用户使用教程https://www.sourceinsight.com/doc/v4/userguide/index.html

安装与破解

1、下载Source Insight 4.0安装包    https://www.sourceinsight.com/download/

2、下载程序破解补丁包  https://pan.baidu.com/s/1irvH-Kfwjf4zCCtWJByqJQ

其中包含文件si4.pediy.lic 和  sourceinsight4.exe。

3、安装下载的Source Insight 4.0安装包。

4、通过自动生成的桌面快捷方式右键打开文件位置,找到sourceinsight4.exe

5、将其替换为破解补丁包中的sourceinsight4.exe,然后双击运行。

6、首次运行,会弹出一个对话框,选择导入license文件,并将破解补丁包中si4.pediy.lic文件导入即可,至此安装破解完成。

 Source Insight阅读Linux源码

1.新建项目

 

2.导入linux3.10源码,点击OK

 

 

 

 

 

3.为项目创建索引

创建索引的目的:Source Insight 去解析源码,生成数据库,这样有助于以后阅读源码。比如点击某个函数时就可以飞快地跳到它定义的地方。 

 

 4.工具常见使用方法

4.1在linux-kernel-3.10项目中打开某个文件

点击图中的“P”按钮,就可以看到右边的列表信息,可以双击文件打开文件,也可以输入文件名查找文件。

4.2打开文件后,按住 ctrl 键的同时,用鼠标点击函数、变量,就会跳到定义它的位置,如下图所示

 4.3查找函数或变量的引用 双击函数,右键点击弹出对话框选择“Lookup Reference”;或者双击函数后,使用快捷键"ctrl+/"来查找引用,如下图:

 点击搜索以后,会出现以下结果,可以看见第2条记录就是我们上面截图中的函数方法(unknown_bootoption),点击左侧的箭头可以跳转到具体的函数调用位置

 如果需要返回刚刚的搜索结果可以点击截图中的箭头,即可返回搜索内容。

5.Source Insight常用快捷键

快捷键功能
Ctrl+=跳转到定义
Alt+/查找引用
F3向后搜寻
F4向前搜寻
F5到指定栏
F7查找符号
F8查找本地符号
F9向左
F10向右
Alt+,向后跳转
Alt+.向前跳转
Shift+F3在光标所在词的后边搜索
Shift+F4在光标所在词的前边搜索
F12增量搜索
Shift+Ctrl+F在工程中搜索
Shift+F8单词高亮

窗口操作快捷键:

快捷键功能
Ctrl+O打开 Project Window
Alt+F8打开和关闭 Symbol Window
自定义键打开和关闭 Contex Window

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++循环斐波那契数列

1.斐波那契数列,又称黄金分割数列、因数学家莱昂纳多斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。如果每对兔子(一雄一雌)每月能生殖一对小兔子(一雄一雌&…

“视觉革命:走进可视化AI识别系统的智能世界

嘿,各位朋友!今天咱们来聊聊一个特别酷炫的技术——可视化AI识别系统。想象一下,如果你的手机能够像你一样“看”懂周围的世界,并且还能告诉你它看到了什么,是不是很神奇?没错,这就是可视化AI识…

Kubernetes 生态揭秘:深度剖析服务与流量管理、Pod 创建,以及外部请求的响应之旅

kubernetes,简称为k8s(k12345678s)。用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群&#xf…

职场上,如何做好自我保护?

今天我们讨论一个话题:在职场上,如何保护好自己?废话不多说,我们直接上干货。 (一) 1.时刻准备一点零食或代餐,如果遇到长时间的会议,就补充点能量。代餐最好选流体,这…

【Lua热更新】下篇 -- 更新中

上篇链接:【Lua热更新】上篇 文章目录 三、xLua热更新📖1.概述📚︎2.导入xLua框架🔖3. C#调用Lua3.1Lua解析器3.2Lua文件夹的重定向3.3Lua解析器管理器3.4全局变量获取3.5全局函数获取3.6映射到List和Dictionary3.7映射到类3.8映…

Gin-vue-admin(1):环境配置和安装

目录 环境配置如果443网络连接问题,需要添加代理服务器 后端运行前端运行 环境配置 git clone https://gitcode.com/gh_mirrors/gi/gin-vue-admin.git到server文件目录下 go mod tidygo mod tidy 是 Go 语言模块系统中的一个命令,用于维护 go.mod 文件…

C# 中的闭包

文章目录 前言一、闭包的基本概念二、匿名函数中的闭包1、定义和使用匿名函数2、匿名函数捕获外部变量3、闭包的生命周期 三、Lambda 表达式中的闭包1、定义和使用 Lambda 表达式2、Lambda 表达式捕获外部变量3、闭包的作用域 四、闭包的应用场景1、事件处理2、异步编程3、迭代…

视阅口译与其他口译的不同点

与其他口译不同 译员在进行视阅口译时可以看到书面材料,这与交替口译和同声口译有所不同。译员能够提前浏览文本内容,对主题、结构和专业词汇等有初步的了解。 压力相对较小 视阅口译相较于同声传译而言,时间压力没有那么紧迫。译员有一定…

初学stm32 --- NVIC中断

目录 STM32 NVIC 中断优先级管理 NVIC_Type: ISER[8]: ICER[8]: ISPR[8]: ICPR[8]: IABR[8]: IP[240]: STM32 的中断分组: 中断优先级分组函数 NVIC_PriorityGroupConfig 中断初始化函…

Dot Foods EDI 需求分析及对接流程

Dot Foods 是一家美国领先的食品和非食品产品的中间批发分销商,主要为食品服务、零售和分销行业的客户提供服务,是北美大型食品中间分销商之一。Dot Foods (以下简称 Dot)的业务模式是通过整合多个供应商的产品,为客户…

MyBatis-Plus(一)

一、 MyBatis-Plus简介 1、简介 MyBatis-Plus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。Mybatis-Plus提供了通用的Mapper和Service,可以在不编写任何SQ…

跟着AI 学AI开发二,本地部署自己的Chat GPT

这里要安装的是Open Web UI ,用一张架构图说明AI 前端与后端的关系。 之前的Python 的方法已经做过多次介绍,这里不做赘述。 顺序:1,Ollama。 2,Docker。 3,Open WebUI。 Ollama 安装下载地址&#xff1…

204页PPT金税四期监管要求与最新政策及风险防范-培训课件

这份资料是关于金税四期监管要求、最新政策及风险防范的培训课件,包含204页PPT内容。核心内容涉及金税四期的发展历程、与金税三期的主要变化、指挥决策系统、税务风险预警指标、重点监控行为、税务稽查重点领域、避税方法及处罚、以及企业自查和税务风险管控原理。…

线性规划中的几种逻辑表达式

线性规划中的几种逻辑表达式 注意: 摘录字刘博士的《数学建模与数学规划》, 以便用时可查。 实际上Gurobi API 中自身放啊变的逻辑表达式函数,下面列出自定义的实现方式。 1 逻辑与 如果 x 1 1 x_1 1 x1​1, x 2 1 x_2 1 x2​1, 那…

knife4j增强swagger

背景 swagger很好用&#xff0c;但是UI不够友好 导入maven依赖 使用maven-search在common模块中导入依赖 <!-- knife4j --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId&g…

iOS - 超好用的隐私清单修复脚本(持续更新)

文章目录 前言开发环境项目地址下载安装隐私访问报告隐私清单模板最后 前言 在早些时候&#xff0c;提交应用到App Store审核&#xff0c;大家应该都收到过类似这样的邮件&#xff1a; Although submission for App Store review was successful, you may want to correct th…

【WRF教程第四期】WRF 初始化概述:以4.5版本为例

WRF 初始化&#xff08;WRF Initialization&#xff09; Building Initialization Programs编译方式 理想案例初始化&#xff08;Initialization for Idealized Cases&#xff09;理想化案例的输入可用的理想化案例 现实案例初始化&#xff08;Initialization for Real Data Ca…

测试工程师八股文04|计算机网络 和 其他

一、计算机网络 1、http和https的区别 HTTP和HTTPS是用于在互联网上传输数据的协议。它们都是应用层协议&#xff0c;建立在TCP/IP协议栈之上&#xff0c;用于客户端&#xff08;如浏览器&#xff09;和服务器之间的通信。 ①http和https的主要区别在于安全性。http是一种明…

【C++】inline函数(内联函数)

文章目录 前言一、宏函数的缺陷二、inline函数1.inline函数的展开规则2.inline的设计分析3.inline函数不建议声明和定义分离 前言 C程序频繁调用函数会使代码效率降低&#xff0c;因为创建函数栈帧需要消耗时间。于是C语言引入宏函数的概念&#xff0c;使用宏函数来替代一些功能…

Android OpenGLES2.0开发(九):图片滤镜

“当你改变想法的时候&#xff0c;记得也要改变你的世界。”——诺曼文森特皮尔 Android OpenGLES开发&#xff1a;EGL环境搭建Android OpenGLES2.0开发&#xff08;一&#xff09;&#xff1a;艰难的开始Android OpenGLES2.0开发&#xff08;二&#xff09;&#xff1a;环境搭…