发布时间:2026/8/23 20:13:31
【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/8/23 20:13:31

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

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

2026/8/23 20:13:31

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

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

2026/8/23 21:18:45

ChatGPT自定义指令:从原理到实践,打造你的专属AI助手

1. 项目概述:为什么我们需要自定义指令?如果你用过一段时间的ChatGPT,大概率会遇到这样的场景:每次开启一个新对话,你都得不厌其烦地重复一些基本要求。比如,你希望它扮演一个专业的代码审查员,…

2026/8/23 21:18:45

算法核心:计数法原理、四种模式与应用场景全解析

1. 计数法:从直觉到算法的思维跃迁在编程和算法竞赛中,我们常常会遇到一类问题:统计某个元素出现的次数、判断元素是否重复、寻找缺失的数字,或者计算满足特定条件的组合数量。新手面对这类问题时,第一反应往往是使用嵌…

2026/8/23 21:18:45

SD WebUI附加功能深度指南:图片智能放大与AI抠图实战

1. 项目概述:不止于文生图,SD WebUI的实用工具箱很多朋友把Stable Diffusion WebUI(后文简称SD WebUI)当作一个纯粹的AI绘画生成器,输入提示词,等待出图,不满意就重画。这当然没错,但…

2026/8/23 21:18:45

统计在数学建模中的核心作用:从描述性统计到推断性分析

1. 从“数”到“理”:统计在数学建模中的核心角色如果你刚开始接触数学建模,或者正准备参加亚太杯、国赛这类竞赛,你可能会有一个疑问:数学建模听起来像是用复杂的方程和算法去解决实际问题,那“统计”在这里面扮演什么…

2026/8/23 21:18:45

AgentPSO:基于粒子群优化的多智能体协作与进化框架

1. 从单兵作战到群体智能:AgentPSO要解决的核心问题最近在折腾大语言模型智能体(LLM Agent)的朋友,估计都遇到过同一个头疼的问题:单个Agent的推理能力,好像总是差那么一口气。你给它一个稍微复杂点的任务&…

2026/8/23 21:13:45

太赫兹通信感知一体化芯片:多智能体协同的硬件基石

1. 项目概述:当太赫兹芯片遇上多智能体最近几年,太赫兹(THz)技术从实验室走向应用前沿的势头越来越猛,尤其是在下一代通信和感知领域。大家可能对6G、车联网、工业4.0这些概念耳熟能详,但支撑这些宏大场景落…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 13:29:45

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/23 6:14:43

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…