第1章:开发环境搭建,在 Windows 中安装 VS 2019

发布时间:2026/10/13 6:55:03

第1章:开发环境搭建,在 Windows 中安装 VS 2019 专栏导航上一篇第1章下载 Linux 0.12 内核回到目录下一篇第2章Linux 基础date 命令本节前言对于本节所讲解的知识有可能你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点请你自行查阅。我呢也会提到一部分的参考课节。但是呢你不应该依赖于我的主动提及。最好呢你自己能够多去了解和查看本专栏目录。另外呢本专栏是一个整体是用来系统化地讲解 Linux 0.12 内核的一套教程。所以呢也需要你在学习本节课程的时候注意专栏的体系完整性。比如软件安装我们需要在整个专栏中安装一套软件那你如果是为了学习 Linux 0.12 内核那么你就需要跟随着本教程安装好一整套软件而不可以孤立地看着某个课节。比如说我们的专栏中会讲解 Bochs 模拟器 的安装。这个软件的安装就需要在我们专栏中所指定的乌班图 26.04.1 版本里面进行。脱离了这个系统版本你在其它的版本的乌班图里面或者是在其它的 Linux 发行版里面来安装那么你可能会安装不上。所以请大家在学习本专栏的课节的时候务必要注意本专栏的体系完整性注意查看本专栏的目录。本专栏为 Linux 0.12 内核专栏为啥还会涉及 Windows 里面的 IDEVS 2019 呢在正文内容中我们将揭晓。一. 下载和安装 VS2019VS2019它是微软公司开发的 IDEVisual Studio 软件的 2019 版。这个 IDE是一个功能非常强大的 IDE 。在 Windows 的世界里想要开发 C/C 程序和 C# 程序它可以说是一个王牌 IDE 了。关于为啥要来安装这个软件我们在下一分节来说明。本分节我们给出几个链接跟着这个课节链接大家可以学习到如何安装 Visual Studio 2019 软件以及基本的使用方法。下面我们来给出这几个链接。参考课节下载与安装 VS2019参考课节用 VS2019 编写C语言程序参考课节在 VS2019 里面打开一个解决方案参考课节在 VS2019 里面显示行号参考课节在VS2019里面调整代码字体大小参考课节编程技能多文件编译参考课节编程技能将现有的代码文件导入项目参考课节Visual Studio 技能调整软件界面布局通过这些个课节的内容你能够下载和安装好 VS2019并能够达到对 VS2019 的基本使用。预计这些个课节大家学习起来应该会花费一些个时间的。慢慢学。希望大家能够学好其中的内容。二. 为何要安装 VS2019 本专栏我们主要的任务是去讲解 Linux 0.12 内核。那么为何要在 Linux 内核专栏里让大家安装和使用 VS2019 这是因为VS2019有一个很好用的功能是我们可以去使用的。我们在阅读一个内核源代码时时不时地需要去查找某一个变量、函数和宏定义的声明位置与使用位置。内核源代码通常代码行数都会很多如果我们单纯地靠个人记忆我们是记不住它们都在哪里定义以及在哪里使用的。而很多时候我们在读到某些个代码的时候我们可能又需要知道变量、函数或者宏定义的定义位置与使用位置这个时候若是有一个东西能够帮助我们快速定位那就好多了。在 Windows 的世界里Visual Studio 软件就可以实现这样的功能。其中VS2019它不单是可以跟踪定位 Windows 程序的变量、函数与宏定义的声明与使用位置也可以用来跟踪 Linux 内核代码的变量、函数和宏定义的声明与使用位置。为了阅读 Linux 0.12 内核的方便为了很方便地查找和定位变量、函数和宏定义的声明与使用位置我们可以采用 Visual Studio 2019 软件来帮我们完成这一任务。三. 案例演示1在 VS2019 中打开 Linux 0.12 内核文件夹在之前的一个课节中我们已经教给大家如何来下载 Linux 0.12 内核了。这个课节的链接就在下面。参考课节第1章下载 Linux 0.12 内核接下来呢请大家自行将 Linux 0.12 内核的源码压缩包给解压缩使用 2345 好压软件就可以解压缩的。然后呢我们打开 VS2019 软件结果如下图所示。图1在图1 所示的界面中我们点击红色框线所示的【打开本地文件夹】按钮结果如下图所示。图2接下来呢请大家在图2 所示的【浏览】对话框里面浏览到你解压缩好了的 Linux 0.12 内核的顶层文件夹。在我这里我是将 Linux 0.12 内核源码压缩包在下图所示的路径中解压缩的。图3在图3 中下方的红色框线为 0.12 源码压缩包上方的红色框线是我解压缩的路径。接下来呢我们在图2 所示的【浏览】对话框里面浏览到图3 所示的【linux-0.12】文件夹里面结果如下图所示。图4然后呢在图4 里面我们来点击右下方的【选择文件夹】按钮。结果如下图所示。图5在图5 里面的【解决方案资源管理器】选项卡里面大家可以看到我们已经是打开了 Linux 0.12 内核的顶层文件夹了。在你那里有可能【解决方案资源管理器】文件夹并不是在左边而是在右边。位置在哪儿没有关系只要有就行。我们打开的 0.12 内核的顶层文件夹就会在【解决方案资源管理器】里面进行显示。如果你不小心将【解决方案资源管理器】选项卡的叉号给单击了将这个选项卡给关闭了那么我们也可以通过依次执行【视图】-【解决方案资源管理器】菜单命令来将其显示出来。如下图所示。图6内核文件夹已经打开了。接下来请大家随我一起执行一些个任务。2【转到定义】与【速览定义】我们在【解决方案资源管理器】中找到下述位置。图7我们来展开图7 中红色框线所示的【init】文件夹图标左边的向右三角号然后双击打开【main.c】结果如下图所示。图8然后呢我们在右边的代码显示区域将界面往下拉找到下面的位置。图9对于图9 的红色框线所示的 160 行代码我们可能会想要知道这个【buffer_init】函数的定义代码是怎样的。接下来我们将鼠标指针移动到【buffer_init】字样的区域中然后点击鼠标右键结果如下图所示。图10在图10 里面我们来点击【转到定义】选项结果如下图所示。图11看吧图11 所示就是 buffer_init 函数的定义代码了。在窗口的右上角还有一个黄色的选项卡它代表了 buffer_init 函数所在的代码文件 buffer.c 的选项卡。这个选项卡之所以与【main.c】选项卡不同没有位于左边而位于右边是因为它只是一个临时创建的选项卡。如果我们点击这个黄色选项卡的叉号就会关闭这个选项卡回到 main.c 选项卡及其代码显示窗口之中。我们也可能想要了解这个 buffer_init 函数及其选项卡所示的 buffer.c 在哪个文件夹里面。我们可以将鼠标指针移动到【buffer.c】选项卡上面结果如下图所示。图12大家请看在弹出的提示框中我们了解到了【buffer.c】代码文件的位置。接下来请大家点击【buffer.c】选项卡的叉号关闭这一选项卡回到 main.c 选项卡及其代码显示窗口里面。【转到定义】功能可以用来查找某一函数的定义代码的位置。【转到定义】功能也可以用来查找某一个宏的定义位置。方法和查找某一函数的定义代码位置的方法一样。将鼠标指针移动到宏名称所在的区域然后点击鼠标右键选择【转到定义】菜单项就可以定位到宏定义的位置了。【转到定义】功能还可以用来查找某一个变量的定义位置。方法与查找函数定义与宏定义的方法类似。将鼠标指针移动到变量名所在的区域然后点击鼠标右键选择【转到定义】菜单项就可以定位到变量定义的位置了。这个变量可以单纯的全局变量也可以是结构体中的成员变量。是不是很方便在图10 里面在【转到定义】选项的上方还有一个速览定义我们看看这个选项有何功能。接下来我们还是将鼠标指针移动到 main.c 的 160 行的【buffer_init】函数名的区域然后点击鼠标右键弹出跟图10 一样的右键菜单然后我们点击【速览定义】菜单项结果如下图所示。图13根据图13 的内容 Visual Studio 软件它是临时地开辟了一个淡黄色显示区域用来显示 buffer_init 定义代码。这个新开辟的淡黄色显示区域位于原本显示 main.c 代码的显示区域里面而不是位于临时单独新建的【buffer.c】选项卡之中。我们同样可以将鼠标指针移动到图13 里面【buffer.c】选项卡的位置结果如下图所示。图14如图14 所示buffer.c 代码文件的位置依旧是被显示在提示框里面了。接下来我们点击图14 中buffer.c 选项卡里面的叉号结束【速览定义】功能的使用。3【转到声明】功能转到声明可以用来查看某一个函数的声明情况。接下来呢我们在【解决方案资源管理器】界面中点击【kernel】文件夹图标左侧的向右三角号结果如下图所示。图15在图15 里面我们双击【sched.c】选项打开【sched.c】代码文件如下图所示。图16在图16 的上方出现了黄色显示的【sched.c】选项卡它右边有【main.c】选项卡。如果你点击一下【main.c】选项卡则下方的窗口会转而显示【main.c】的代码内容并且【main.c】选项卡会变为黄色显示。所以某一个选项卡呈现为黄色显示则代码显示窗口中显示的就是这个选项卡所对应的代码文件的内容。我们保持【sched.c】选项卡的选中状态不动。然后呢我们将界面往下拉找到下述位置。图17图17 所示为 schedule 函数的定义代码。接下来我们就来看一看它的函数声明情况。我们将鼠标指针移动到【schedule】函数名的区域然后点击鼠标右键结果如下图所示。图18在图18 所示的右键菜单中我们点击红色框线所示的【转到声明】选项结果如下图所示。图19在图19 里面蓝色选中区域所在行60 行即为 schedule 函数的声明情况。根据右上角的黄色选项卡的显示此声明代码位于 sched.h 头文件中。我们来看一看 sched.h 头文件位于哪个位置。我们将鼠标指针移动到黄色显示的【sched.h】选项卡的区域中悬停结果如下图所示。图20在图20 中弹出了提示框用以显示 sched.h 头文件所在的位置。特别提醒对于变量和宏我们也可以使用【转到声明】功能。而对于变量和宏【转到声明】与【转到定义】的功能效果是一样的都是会定位到它们的声明或定义代码。只有函数才会区分声明与定义。接下来我们关闭右上角的黄色显示的【sched.h】选项卡点击其叉号即可实现关闭选项卡的功能。4使用查找功能有时我们会希望查找某个变量、函数、宏的情况既可能是想要了解它们的声明与定义情况也可能是想要了解使用它们的情况或者二者兼而有之。我们来看一看如何来使用这种搜索功能。图21当前的 VS2019界面如图21 所示我们打开了 sched.c 和 main.c 两个选项卡。在这两个选项卡里面sched.c 选项卡又是当前选项卡又是定位到 schedule 函数的附近。而这个 schedule 函数算是一个明星了。在 Linux 0.12 内核里面调用它的地方可是不少。我们就来看一看都有哪些个地方声明、定义或者调用了它。我们在 VS2019 里面依次点选【编辑】-【查找和替换】-【在文件中查找】菜单命令过程如下图所示。图22图23在图23 里面红色框线所示的文本框里面可以输入我们想要查找的内容。我们本次想要查找的是【schedule】函数的声明、定义和使用情况。我这里在弹出图23 的时候红色框线所示的文本框里面直接出现了【schedule】函数名。如果不是这个函数名我们也可以手动输入它。接下来呢我们点几次【查找下一个】按钮过程如下图所示。图24图25图26图27图28图29图30图31图32图33图34图35图36图37图38图39在我所展示的这些个搜索结果里面它包含了许多的带吗行也涉及了诸多的代妈文件。好多的 schedule 函数名它是位于 sched.c 里面。其余的还有 exit.c、ll_rw_blk.c 和 sched.h 文件。5小结到了这里Visual Studio 软件大家可以关闭了。以上的诸多查找内容如果让大家自行记忆和查找我认为会很难。人很难记住这么多的琐细的东西。如果你很擅长 Linux 命令其实用 Linux 命令就可以找到这些个东西。不过呢我不擅长 Linux 命令我目前比较熟悉的还是 Visual Studio 软件。借助于 Visual Studio 软件我们可以很方便地去查找很多东西。至于说如何用 Linux 命令来查找到这些东西还得请大家自行学习好 Linux 命令。这玩意儿想要学好我觉得凭个人造化吧。这会儿我也在学习 Linux 。最后我们来对本节内容做一个简单的回顾。本节主要完成了两件事一是下载并安装了 VS2019并了解了它的基本使用方法二是通过具体的案例演示掌握了在 VS2019 中阅读 Linux 0.12 内核源代码的几种常用手段包括【转到定义】、【速览定义】、【转到声明】以及【在文件中查找】功能。借助这些功能我们在阅读内核源码时可以快速定位变量、函数和宏定义的声明位置与使用位置从而大大提升阅读效率。对于不擅长 Linux 命令的读者来说VS2019 提供了一条非常友好的代码阅读路径。当然如果你熟悉 Linux 命令也可以使用 grep 等命令行工具来达到类似的目的。两种方式各有优劣大家可以根据自己的习惯来选择。在后续的课节中我们会继续使用 VS2019 来阅读 Linux 0.12 内核的更多源码敬请期待。结束语关于 Visual Studio 软件我个人是很喜欢这个软件的。界面美观功能强大还能够用来阅读 Linux 内核源代码。在我写作的时刻我也在正在写 Windows 编程专栏。在本篇文章的第一分节里面我们展示的几个参考课节都是出自我正在写的 Windows 编程专栏。你若是喜欢的话你也可以关注我的 Windows 编程专栏学习 Windows API 与 MFC 知识。本节结束。专栏导航上一篇第1章下载 Linux 0.12 内核回到目录下一篇第2章Linux 基础date 命令
延伸阅读

更多相关文章

2026/10/13 6:55:03

天地盖 vs 普通开槽摇盖纸箱:承重性能与装箱效率核心区别

天地盖 vs 普通开槽摇盖纸箱:承重性能与装箱效率核心区别一、对比引言天地盖纸箱与普通开槽摇盖纸箱(RSC 型)是工业包装中最主流的两类箱型,二者结构形式完全不同,在承重性能、装箱效率、自动化适配、成本等维度差异显…

2026/10/13 6:50:03

Cortex-M4 三级流水线 BL 带返回跳转指令(PC、LB)

一、行业经典疑点:两段官方描述看似冲突在 Cortex‑M4 汇编体系中,关于 BL 指令存在两段标准描述,是嵌入式学习、面试、考试的核心易错点:硬件流水线描述:BL 执行顺序为先将 PC−4 赋值给 LR,再将目标函数入…

2026/10/13 8:00:06

Open Code Review:一种以透明度为基础设施的异步协作范式

1. 项目概述:这不是代码检查,而是一场协作范式的重构“open-code-review”这个词组乍看像一个技术名词,但其实它根本不是某个工具、平台或协议的官方命名——它是一类实践行为的精准描述,是开发者群体在真实协作中自发形成的一套共…

2026/10/13 8:00:06

AgentScope核心解析:Actor模型与多智能体协作框架详解

AgentScope 这个名字,最近在关注 Agent 应用开发的人应该都听过。但说实话,我第一次接触它的时候挺懵的:网上资料东一榔头西一棒子,有人说它是编排框架,有人说它是分布式调度工具,还有人提它跟低代码平台有…

2026/10/13 8:00:06

MIT 6.824 Lab1:用Go实现容错MapReduce调度器

1. 这不是“写个MapReduce”,而是MIT分布式系统课的第一次真实心跳 刚接触6.824这门课的同学,看到“lab1”三个字,容易下意识以为是“照着文档敲几行代码就能跑通的入门练习”。我当年也是这么想的——直到在凌晨三点盯着屏幕里反复崩溃的wor…

2026/10/13 8:00:06

LiteLLM:统一多模型API网关的工程实践与落地指南

1. 项目概述:LiteLLM 是什么,它解决的到底是什么问题? LiteLLM 这个名字乍一听像某个轻量级模型,但其实它压根不训练模型、不推理模型、也不压缩模型——它是个“协议翻译器”,更准确地说,是一个 统一 API…

2026/10/13 8:00:06

五款GNSS数据处理软件基线解算对比:试验设计与差异归因

简介:《五款GNSS数据处理软件基线解算结果研究》是一份面向卫星导航数据处理、测绘工程与定位应用人员的专业技术文献。研究基于某工程控制网六条实测基线,系统对比CGO、TBC、SOUTH、国产CGO及国外LGO等五款软件在不同采样间隔(5至60秒&#…

2026/10/13 7:55:06

PyTorch迁移学习实战:蚂蚁蜜蜂二分类入门指南

1. 项目概述:为什么蚂蚁蜜蜂分类是迁移学习的“黄金入门题”你打开PyTorch官方教程,翻到迁移学习章节,第一眼看到的几乎总是那个经典案例:用ResNet在ImageNet预训练权重上微调,完成蚂蚁(ant)和蜜…

2026/10/13 5:19:27

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/13 0:04:41

基于Triton部署YOLO目标检测:从训练脚本到线上服务

简介:这份资源面向希望将目标检测模型落地到生产环境的深度学习开发者与算法工程师,聚焦于用 Triton Inference Server 部署 YOLOv9 的完整实战方案,解决从训练权重到线上推理服务之间的工程化难题。压缩包共 16 个文件,约 886KB&…

2026/10/13 0:04:41

手把手教你云端部署Qwen-Image-2.1:从GPU选型到在线文生图服务

Qwen-Image-2.1 这个开源的图像生成模型,最近在内容创作和 AI 应用圈子里热度相当高。它属于通义 Qwen 系列里的视觉生成分支,让我眼前一亮的是它对中文长文本的理解能力——以前用那些老方案生成带中文文字的图,十个里九个是“乱码印刷体”&…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑