【Linux】 开发工具(Makefile、git、cgdb)解析与对于操作系统的基础认识

发布时间:2026/10/20 0:04:07

【Linux】 开发工具(Makefile、git、cgdb)解析与对于操作系统的基础认识 目录前言Part1. MakefilePart1.1. 基础语法Part1.2. .PHONYPart1.3. Make增量编译原理Part1.4. 多文件递归编译示例Part1.5. Makefile变量Part1.6. 内置函数Part1.7. 模式规则Part1.8. 完整模板Part2. C语言缓冲区原理Part3. Git常用基础命令Part4. cgdb调试器Part5. 操作系统基础理解Part5.1. 为什么需要内存Part5.2. 数据流动Part5.3. 操作系统四大核心功能Part5.4. 内核态、用户态Part5.5. 操作系统对数据的管理Part6. 结语前言对于开发工具的熟练使用和Linux操作系统的理解是非常重要的来跟随小编的视角来看看吧。lets go!!!!!!!!Part1. MakefilePart1.1. 基础语法目标: 依赖 命令 示例 code: code.c gcc -o code code.c逻辑如果code.c修改过则执行gcc编译生成可执行文件code。Part1.2. .PHONY.PHONY: clean clean: rm -f code1.PHONY声明这是伪目标直接执行命令。2 执行清理make cleanPart1.3. Make增量编译原理make依靠文件修改时间戳判断要不要执行规则1依赖文件更新时间 目标文件更新时间执行编译。2 依赖没有改动多次make输出nothing to be done不会重复编译。3touch filename修改文件的三个时间戳可以欺骗make强制触发编译。Part1.4. 多文件递归编译示例A:A.o gcc A.o -o A A.o:A.s gcc -c A.s -o A.o A.s:A.c gcc -E A.c -o A.smake自上而下扫描递归解析依赖一层层生成中间文件。Part1.5. Makefile变量B code test: echo $(B)•取值语法$(变量名)自动化变量各个变量含义:1$ 当前规则的目标2$^ 全部依赖文件列表3$ 第一个依赖文件命令前加执行命令不在终端打印这条shell命令。例echo linking $^ - $Part1.6. 内置函数1wildcard匹配一批文件SRC : $(wildcard *.c)Part1.7. 模式规则%.o:%.c $(CC) $(CFLAGS) -c $ -o $ //含义任意.o由同名.c编译生成。Part1.8. 完整模板BIN app SRC $(wildcard *.c) OBJ $(SRC:.c.o) CC gcc $(BIN): $(OBJ) $(CC) -o $ $^ %.o:%.c $(CC) -c $ .PHONY:clean clean: rm -f $(BIN) $(OBJ)Part2. C语言缓冲区原理1行缓冲标准输出stdout是行缓冲遇到\n换行才刷新缓冲区打印到屏幕。printf(hello); sleep(3); // 不会立刻打印sleep结束才输出 printf(hello\n); sleep(3); // \n触发刷新立刻打印2fflush(stdout)强制刷新缓冲区不需要换行直接输出内容。3 格式化输出对齐•%xd右对齐占x字符宽度•%-xd左对齐占x字符宽度Part3. Git常用基础命令1git add .# 将所有修改加入暂存区2git status# 查看仓库当前状态3git commit -m 提交描述# 暂存区提交到本地仓库4git push# 推送到远程仓库5git clone 远程仓库地址# 克隆远程仓库到本地p.s.暂存区可以多次修改多次add统一一次commit、push。Part4. cgdb调试器gcc -g test.c -o test cgdb testGDB常用指令表指令功能q退出gdbl列出源代码l 行号从指定行展示源码b 行号设置断点b main在main函数打断点r运行程序c继续运行到下一个断点停下n 单步跳过函数调用s 单步进入函数内部bt打印函数调用栈backtracefinish跑完当前函数返回调用处p 变量名打印变量值info b查看全部断点信息disable 断点编号临时禁用断点enable 断点编号启用断点until 行号直接运行到指定行停下display 变量持续监视变量每次暂停自动打印undisplay 编号取消监视info locals打印当前函数所有局部变量watch 变量变量被修改程序自动停下set var xygdb内部修改变量的值condition 断点号 条件条件断点满足条件才停Part5. 操作系统基础理解Part5.1. 为什么需要内存CPU只能直接读写内存不能直接读写磁盘。磁盘速度很慢CPU运算速度极快内存作为中间高速缓存用来匹配CPU和外设的速度差距。程序运行过程1 可执行文件存放在磁盘。2 运行程序操作系统把程序加载到内存。3CPU从内存读取指令、数据执行。Part5.2. 数据流动磁盘 → 内存 → CPU运算 → 内存 → 网卡(输出外设)发给对方对方网卡接收放入内存处理最后写入磁盘保存。所有外设都不和CPU直接打交道数据必经内存中转。Part5.3. 操作系统四大核心功能1进程管理2内存管理3文件管理4驱动设备管理Part5.4. 内核态、用户态•应用程序跑在用户态不能直接访问硬件、内存、设备。• 想要操作硬件必须调用系统调用陷入内核态由操作系统内核完成硬件操作。•高内聚低耦合上层应用只调用接口底层驱动封装硬件细节。Part5.5. 操作系统对数据的管理操作系统把各式各样来自硬件的数据统一抽象成数据结构完成增删查改。通过结构体描述管理对象进程PCB、文件描述符等保存元信息完成管理。Part6. 结语这篇文章我们认识到了Linux开发工具和操作系统的相关知识接下来小编还会带来更多Linux相关的知识敬请期待~最后祝大家可以春风得意马蹄疾一日看尽长安花最后的最后要是觉得本文还可以的话可以点点赞关注小编一波谢谢大家~
延伸阅读

更多相关文章

2026/10/19 17:17:06

多智能体系统架构设计:外部知识与分层记忆如何赋能AI协同

1. 项目概述:当需求遇上架构,多智能体协同的破局之路最近在折腾一个挺有意思的项目,核心目标就写在标题里了:Bridging Requirements and Architecture,也就是如何弥合业务需求与系统架构之间的鸿沟。这听起来像是软件工…

2026/10/20 15:36:10

数据结构与算法:从核心原理到实战应用,构建高效编程思维

很多初学者在接触编程时,都会遇到一个共同的困惑:为什么我学会了语法,还是写不出像样的程序?为什么看别人的代码,总觉得那些vector、map、递归、动态规划用得行云流水,自己却连一个简单的数据组织都理不清&…

2026/10/20 19:12:11

从零理解感知机:原理、损失函数与随机梯度下降实战

感知机这东西,算是我接触机器学习时第一个让我觉得“原来机器真能自己学东西”的模型。现在回头再看,它确实简单得有点过分——一个线性函数套个符号函数,加一个极其朴素的更新规则,没了。但就是这么一个看似简陋的算法&#xff0…

2026/10/20 19:12:11

AI辅助课程论文写作全流程:选题、大纲到文献的实战指南

1. 课程论文为什么总卡在起跑线上1.1 选题没有抓手,是绝大多数“卡文”的真正源头我先说个常见的场景。每到课程论文截止前三周,宿舍群里就会出现一个永恒的循环:一开始是“随便写写就完事”,中间变成“题目是不是选太大了”&…

2026/10/20 19:12:11

AI模型版本辨伪指南:识别虚假技术新闻与真实部署路径

我无法根据您提供的标题生成符合要求的博文内容,原因如下:该标题中包含明显虚构、不实且违反事实核查原则的信息:“Claude Haiku 5.5”:Anthropic 官方从未发布过名为“Haiku 5.5”的模型。Claude 系列当前公开版本为 Claude 3&am…

2026/10/20 19:12:11

CDP协议+Electron桌面应用自动化:原理、实践与踩坑指南

我们团队最近在做一个“批量流程自动化”的内部项目,核心诉求是让一个Agent能够像人一样操作我们公司某款Electron桌面客户端,自动完成录入、查询、导出这一连串动作。最开始想的是图像识别加模拟键鼠,试了几天发现全是坑:窗口一遮…

2026/10/20 19:12:11

AgenticOps全栈能力解析:从能力层到交互层的运维新范式

1. 从"人找工具"到"Agent 找工具":运维交互范式正在发生什么变化过去十几年,运维和研发的工作方式基本没变过:人打开控制台、翻文档、查监控、敲命令、写脚本、提工单。工具越来越多,平台越来越复杂&#xff…

2026/10/20 19:07:06

HG680-LC/LY/LV线刷救砖全教程:Hi3798MV310短接与HiTool烧录实战

手里那台HG680-LC刷完某个“精简优化包”之后,第二天开机就卡在开机LOGO上,指示灯有规律地闪,电视却始终没有画面。当时第一反应是完蛋了,后来拆开主板确认SoC是Hi3798MV310,心里反而踏实下来——这类芯片方案的盒子有…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/20 1:05:37

单片机C运行时从启动到多任务:中断安全与共享资源冲突

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

GCC编译四步详解:预处理、编译、汇编、链接实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

FIW线是什么?FEP注塑线与普通氟塑料线的区别及应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

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

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

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