C语言——makefile的使用
makefile如果有多个.c文件要编译用gcc编译每次都要重新输入每次要编很多如果出错改好又要全部都编一遍如gcc main.c add.c sub.c来把文件拼接成a.out,这是很浪费时间和编译效率的这时候用makefile可以提升效率使用规则如下写makefilemakefile 语法规则目标依赖文件列表Tab命令列表(1). 目标calc(2). 依赖文件main.c add.c sub.c(3). 命令列表就是生成目标所需要的命令(规则)具体使用操作如下需要三个文件为基本第一个是函数.c文件用于提供算法用第二个是头文件.h文件用于存放被调用的函数和定义结构体等等第三个是main函数.c文件专门调用dlinklist.h的函数来实现功能第四个是makefile文件用来定义项目编译规则执行 make 命令就能自动按依赖编译、更新目标文件避免重复编译。CCgcc CFLAGS-O linklist1: main1.o dlinklist.o gcc main1.o clinklist.o -O -o dlinklist1 main1.o: main1.c gcc -c main1.c -O -o main1.o dlinklist.o: dlinklist.c gcc -c dlinklist.c -O -o dlinklist.o clean: rm linklist1 rm *.o以上是最朴素版的makefile对main1.c和dlinklist.c的makefile没有任何自动变量以下是内置各种变量的makefile版本# 1 编译器变量CC指代gccCCgcc# 2 编译选项 CFLAGS-O 开启代码优化CFLAGS -O# 3 OBJ需要的目标文件列表.o文件OBJ main1.o dlinklist.o# 4 最终生成可执行程序名字TARGETlinklist1# 6 规则linklist1 依赖 main1.o dlinklist.o$(TARGET): $(OBJ)# 7 命令gcc 把所有依赖文件生成目标程序linklist1# $^ 代表所有依赖项$代表当前目标$(TARGET)$(CC) $^ $(CFLAGS) -o $#8 main1.o 依赖 main1.cmain1.o:main1.c#9 编译main1.c生成main1.o-c只编译不链接$代表第一个依赖文件$(CC) -c $ $(CFLAGS) -o $#10 dlinklist.o依赖dlinklist.cdlinklist.o:dlinklist.c#11 编译dlinklist.c生成dlinklist.o$(CC) -c $ $(CFLAGS) -o $#13 伪目标clean清理产物clean:#14 删除可执行文件linklist1rm $(TARGET)#15 删除所有 .o 目标文件rm *.o创建makefile文件的时候直接用vi makefile编译时用make -f makefile即可

相关新闻

学习算法之双指针篇(1)(c++版)

学习算法之双指针篇(1)(c++版)

一、概念和分类 双指针是一种‌用两个指针协同移动来减少遍历次数、降低时间复杂度的思路。 常见的有对撞指针和快慢指针。 1.对撞指针 • 对撞指针是从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼近。终⽌条件⼀般是两个…

2026/10/17 10:46:08 阅读更多 →
【高质量毕设开题】 基于微信小程序的智慧校园生活服务平台设计与实现(源码+报告)

【高质量毕设开题】 基于微信小程序的智慧校园生活服务平台设计与实现(源码+报告)

温馨提示: 本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示: 本人主页置顶文章(点我)开头有 CSDN平台官方提供的学长联系方式的名片! 温馨提示: 本人主页置顶文章(点我)开头有 CSDN 平…

2026/10/17 10:46:08 阅读更多 →
C#语音测试例程:用System.Speech打造TTS合成验证工具

C#语音测试例程:用System.Speech打造TTS合成验证工具

简介:面向初学者的C#语音合成测试例程,基于Visual Studio 2010与Windows自带System.Speech组件,演示通过Text-to-Speech技术将文本转换为语音播报的全过程,适合刚接触TTS开发、想了解人机交互或无障碍应用实现的开发者&#xff0c…

2026/10/17 10:46:08 阅读更多 →

最新新闻

Argon架构解析:面向毫秒级SLA的AI服务三层解耦设计

Argon架构解析:面向毫秒级SLA的AI服务三层解耦设计

1. 项目概述:这不是一次简单的模型调用,而是一次系统级工程重构“Google 用 Gemini 4 Argon 构建案例”——这个标题乍看像一则新闻简报,但作为在AI基础设施一线摸爬滚打十多年的从业者,我第一反应是:这根本不是在讲“…

2026/10/17 11:32:28 阅读更多 →
n8n集成Gemini 4 Argon与MCP协议构建真Agent工作流

n8n集成Gemini 4 Argon与MCP协议构建真Agent工作流

1. 这不是“又一个AI工作流”,而是n8n生态里首次真正打通MCP协议的Gemini原生集成 我第一次在某跨平台自动化实验室看到这个标题时,下意识点开想确认是不是标题党——毕竟过去两年里,“用XX模型接入n8n”这类文章我至少扫过四十多篇&#xff…

2026/10/17 11:32:28 阅读更多 →
意图优先的版本控制系统:重构代码协作的认知范式

意图优先的版本控制系统:重构代码协作的认知范式

1. 项目概述:这不是又一个Git客户端,而是一次底层协作范式的重写“7个人、5个月,Anthropic造出了Git替代品”——这个标题在技术圈刷屏时,我正带着团队在做一个跨时区协同的嵌入式固件项目。每天早上打开终端,git pull…

2026/10/17 11:32:28 阅读更多 →
DVWA中CSP绕过原理与四类实战利用手法详解

DVWA中CSP绕过原理与四类实战利用手法详解

1. 项目概述:CSP不是铁壁,而是可被理解、可被分析、可被绕过的策略体系“CSP Bypass”这个词在渗透测试和Web安全研究圈里,几乎等同于一次对开发者安全意识的现场压力测试。它不制造漏洞,却能放大漏洞的价值;它不依赖服…

2026/10/17 11:32:28 阅读更多 →
Vue高德地图动态绘制路线与轨迹巡航实战:从坐标转换到动画性能优化

Vue高德地图动态绘制路线与轨迹巡航实战:从坐标转换到动画性能优化

做后台管理系统这么多年,我接到过最典型的“地图需求”就是标题里这个:高德地图动态绘制路线,轨迹巡航,还指定要用 Vue。第一次听可能觉得不就是画一条线加个小车跑吗,真做完才发现里面全是细节:坐标要转换…

2026/10/17 11:32:28 阅读更多 →
STM32F103移植W5500 ioLibrary:SPI驱动与socket通信实战

STM32F103移植W5500 ioLibrary:SPI驱动与socket通信实战

简介:面向基于STM32F103RCT6等MINISTM32平台的嵌入式开发者,这套W5500 ioLibrary移植工程包含完整的驱动适配代码,可直接参考使用。W5500是集成SPI接口的硬核以太网控制器,自带TCP/IP协议栈,配合STM32的SPI外设即可实现…

2026/10/17 11:31:27 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →