news 2026/5/10 17:55:47

学习笔记——Makefile

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习笔记——Makefile

基本概念

Makefile 是工程管理工具,用于编译多个源文件(可能在不同目录下),可以添加编译选项。

基本语法规则

makefile

目标: 依赖 [TAB] 规则命令

版本演进

版本1:直接编译

makefile

a.out: main.c func.c gcc main.c func.c -o a.out

版本2:使用内置变量

makefile

a.out: main.c func.c gcc $^ -o $@ # 不需要依赖文件 clean: rm a.out

内置变量说明:

  • $^:在本条规则中,表示所有的依赖文件

  • $@:在本条规则中,表示目标文件

执行示例:

# 第一次编译 linux@ubuntu:~/20251103/os_app/Make$ make # 源文件未被修改时再次编译 linux@ubuntu:~/20251103/os_app/Make$ make make: 'a.out' is up to date. # 清理生成的文件 make clean

说明:当产生目标文件的相关源文件没有被修改(没有被更新)时,Make 不会重新编译。

版本3:使用自定义变量

makefile

# 定义变量 SRC = main.c SRC += func.c # 追加变量 APP = a.out FLAG = -g # 编译选项,如调试信息 $(APP): $(SRC) gcc $^ -o $@ $(FLAG) clean: rm $(APP)

变量说明:

  • SRC:源文件列表

  • APP:生成的可执行文件名

  • FLAG:编译选项(如-g用于调试)

相关源文件

main.c

#include <stdio.h> #include "func.h" int main() { int a = 10; int b = 20; int c = add(a, b); printf("add is %d\n", c); c = sub(a, b); printf("sub is %d\n", c); }

func.c

int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; }

func.h

#ifndef __FUNC_H_ #define __FUNC_H_ int add(int a, int b); int sub(int a, int b); #endif

注意事项

  1. Makefile 文件名可以是makefileMakefile(建议使用后者)

  2. 命令前的缩进必须是 Tab 键,不能是空格

  3. 当执行make命令后,会在当前目录下查找 Makefile 文件

  4. make clean用于清理生成的文件

  5. Make 会检查文件的更新时间,如果依赖文件比目标文件新,才会重新编译

完整示例 Makefile

makefile

# 变量定义 SRC = main.c func.c APP = a.out FLAG = -g # 默认目标 $(APP): $(SRC) gcc $^ -o $@ $(FLAG) # 清理规则 clean: rm -f $(APP)

这个 Makefile 实现了:

  1. 一键编译所有源文件生成可执行文件

  2. 支持调试选项

  3. 提供清理功能

  4. 自动判断是否需要重新编译

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 18:06:19

【必看收藏】2026大模型校招趋势:5.2W月薪岗位揭秘,AI人才就业指南

2026年AI人才校招市场呈现显著扩张趋势&#xff0c;大模型算法岗位月薪可达5.2万&#xff0c;顶尖人才薪资翻倍。高科技企业(60%)比金融行业(40.1%)更重视AI人才&#xff0c;近六成企业计划扩招。企业更看重数学与算法基础(60.3%)和项目实践(52.5%)&#xff0c;名校学历重要性下…

作者头像 李华
网站建设 2026/5/10 18:06:17

MMSA框架:多模态情感分析的终极指南与实战应用

MMSA框架&#xff1a;多模态情感分析的终极指南与实战应用 【免费下载链接】MMSA MMSA is a unified framework for Multimodal Sentiment Analysis. 项目地址: https://gitcode.com/gh_mirrors/mm/MMSA 在人工智能快速发展的今天&#xff0c;多模态情感分析正成为理解人…

作者头像 李华
网站建设 2026/5/10 18:02:54

Markdowner:网站内容秒变AI友好Markdown的终极神器

还在为网站内容整理发愁吗&#xff1f;Markdowner来帮你&#xff01;这个强大的开源工具能够将任何网站瞬间转换为适合大型语言模型处理的Markdown格式数据&#xff0c;让你的AI应用更智能、更高效。 【免费下载链接】markdowner A fast tool to convert any website into LLM-…

作者头像 李华
网站建设 2026/5/10 17:49:47

如何扛住《珠江》所有拍摄考验?幕后8K设备实力揭晓

珠江&#xff0c;一条承载着千年商贸与人文记忆的水道&#xff0c;其纪录片拍摄始终面临着独特挑战——变幻的光线、复杂的水汽环境、需要同时捕捉的宏大场景与精微细节。当拍摄团队决定采用博冠8K摄像机完成这一项目时&#xff0c;这既是对设备性能的一次高强度检验&#xff0…

作者头像 李华
网站建设 2026/5/10 17:59:38

41、网络与文件权限及数字系统知识详解

网络与文件权限及数字系统知识详解 一、网络文件权限相关 特定用户权限分析 对于Roger,他是Everyone、Executive和Marketing组的成员,可依据相关图表和表格,在项目日志中明确其组合权限和有效权限。 对于Susan,作为Everyone、Accounting、Executive和Finance组的成员,…

作者头像 李华
网站建设 2026/5/10 18:04:10

Heimdallr浏览器扩展:终极安全监控工具使用指南

Heimdallr是一款专为安全研究人员设计的Chrome浏览器扩展&#xff0c;致力于被动嗅探浏览器流量&#xff0c;提供漏洞框架指纹识别、蜜罐请求告警拦截以及浏览器特征追踪对抗等功能。本指南将详细介绍如何安装和使用这款强大的安全监控工具。 【免费下载链接】Heimdallr 项目…

作者头像 李华