news 2026/3/28 9:30:23

学习笔记——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/3/27 16:00:05

93年32岁iT运维项目因甲方不给项目续约,导致项目解散,从而才会失业

以上是某红书平台网友分享的真实案例&#xff01; 这两年&#xff0c;IT行业面临经济周期波动与AI产业结构调整的双重压力&#xff0c;确实有很多运维与网络工程师因企业缩编或技术迭代而暂时失业。 很多人都在提运维网工失业后就只能去跑滴滴送外卖了&#xff0c;但我想分享…

作者头像 李华
网站建设 2026/3/25 0:47:14

13、网络安全威胁与防护工具全解析

网络安全威胁与防护工具全解析 在当今数字化时代,网络安全至关重要。了解常见的网络威胁端口、服务以及相关防护和攻击工具,对于保障网络安全至关重要。本文将详细介绍这些内容,帮助大家更好地应对网络安全挑战。 常见有害端口及对应特洛伊木马 以下是一些常见的有害端口…

作者头像 李华
网站建设 2026/3/28 14:05:35

国内这5家靠谱棉羊毛混纺纱线源头厂家,你知道几个?

国内这5家靠谱棉羊毛混纺纱线源头厂家&#xff0c;你知道几个&#xff1f;引言在纺织行业中&#xff0c;棉羊毛混纺纱线凭借其独特的优势&#xff0c;广泛应用于各类服装和家纺产品。其既融合了棉的柔软舒适与吸湿性&#xff0c;又具备羊毛的保暖性和弹性。对于众多纺织企业和从…

作者头像 李华
网站建设 2026/3/26 16:22:55

出口欧盟越来越难:2026 年工厂必须补齐的“六份关键资料”

过去一年&#xff0c;越来越多出口欧盟的工厂出现同一个现象&#xff1a;客户突然开始要资料、问流程、要供应链说明。无论做铝型材、铝板带、铝制品、机械件、金属配件……你会明显感觉到&#xff1a;出口欧盟比过去难了&#xff0c;而且难点都落在“资料”上。很多老板以为这…

作者头像 李华