千家信息网

linux makefile文件有哪些内容

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容主要讲解"linux makefile文件有哪些内容",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"linux makefile文件有哪些内容"吧!
千家信息网最后更新 2025年12月01日linux makefile文件有哪些内容

本篇内容主要讲解"linux makefile文件有哪些内容",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"linux makefile文件有哪些内容"吧!

#sample Makefile
edit : main.o kbd.o command.o display.o \ #***次:作为目标"edit"的依赖文件列表出现
insert.o search.o files.o utils.o
cc -o edit main.o kbd.o command.o display.o \#第二次:规则命令行中作为"cc"的参数列表
insert.o search.o files.o utils.o
main.o : main.c defs.h
cc -c main.c
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
clean :
rm edit main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o

在书写时,一个较长行可以使用反斜线(\)分解为多行,这样做可以使Makefile清晰、容易阅读。注意:反斜线之后不能有空格(这也是大家最容易犯的错误,而且错误比较隐蔽)。大家在书写Makefile时,推荐者中将较长行分解为使用反斜线连接得多个行的方式。当我们完成了这个Maekfile以后;创建可执行程序 "edit",你所要做的就是在包含此Makefile的目录(当然也在代码所在的目录)下输入命令"make"。删除已经本目录下生成的文件和所有的.o文件,只需要输入命令"make clean"就可以了。

为了避免编写代码时工作量重复的这个问题,在实际工作中大家都比较认同的方法是,使用一个变量"objects"、"OBJECTS"、 "objs"、"OBJS"、"obj"或者"OBJ"来作为所有的.o文件的列表的替代。在使用到这些文件列表的地方,使用此变量来代替。在上例的 Makefile中可是添加这样一行:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
"objects"作为一个变量,它代表所有的.o文件的列表。在定义了此变量后,我们就可以在需要使用这些.o文件列表的地方使用"$(objects)"来表示它,而不需要罗列所有的.o文件列表。因此上例的规则就可以这样写:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
…….
…….
clean :
rm edit $(objects)
需要增加或者去掉一个.o文件时。我们只需要改变"objects"的定义(加入或者去掉若干个.o文件)。这样做不但减少维护的工作量,而且可以避免由于遗漏而产生错误的可能。

在使用make编译.c源文件时,可以省略编译一个.c文件所使用的命令。这是因为make存在一个默认的规则,能够自动完成对.c文件的编译并生成对应的.o文件。它执行命令"cc -c"来编译.c源文件。对于上边的例子,此默认规则就使用命令"cc -c main.c -o main.o"来创建文件"main.o"。

书写Makefile时,对于一个.c文件如果使用make的隐含规则,那么它会被自动作为对应.o文件的一个依赖文件(对应是指:文件名除后缀外,其余都相同的两个文件)。因此我们也可以在规则中省略目标的倚赖.c文件。

上边的例子就可以以更加简单的方式书写,使用了变量"objects"。简化版本的Makefile
GUN make中文手册如下:

# sample Makefile
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
.PHONY : clean
clean :
rm edit $(objects)

书写规则建议的方式是:单目标,多依赖。就是说尽量要做到一个规则中只存在一个目标文件,可有多个依赖文件。尽量避免多目标,单依赖的方式。这样后期维护也会非常方便,而且Makefile会更清晰、明了。

.PHONY : clean
clean :
-rm edit $(objects)
这两个实现有两点不同:

  1. 通过".PHONY"特殊目标将"clean"目标声明为伪目标。防止当磁盘上存在一个名为"clean"文件时,"clean"所在规则的命令无法执行。2. 在命令行之前使用"-",意思是忽略命令"rm"的执行错误。

  2. 默认的情况下,make会在工作目录(执行make的目录)下按照文件名顺序寻找linux makefile文件读取并执行,查找的文件名顺序为:"GNUmakefile"、"makefile"、"Makefile"。

如果make程序在工作目录下无法找到以上三个文件中的任何一个,它将不读取任何其他文件作为解析对象。当linux makefile文件的命名不是这三个任何一个时,需要通过make的"-f"或者"--file"选项来指定make读取的makefile文件。给make指定makefile文件的格式为:"-f NAME"或者"-file=NAME",它指定文件"NAME"作为执行make时读取的linux makefile文件。也可以通过多个"-f"或者"--file"选项来指定多个需要读取的 makefile文件,多个makefile文件将会被按照指定的顺序进行连接并被make解析执行。当通过"-f"或者"--file"指定make读取makefile的文件时,make就不再自动查找这三个标准命名的makefile文件。

到此,相信大家对"linux makefile文件有哪些内容"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

文件 命令 规则 目标 目录 内容 变量 多个 工作 方式 错误 编译 三个 文件名 斜线 顺序 上边 两个 代码 例子 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库设置唯一怎么去掉 南宁手机棋牌软件开发公司 武汉大学网络安全学院复试 上海数据网络技术服务电话 干干净净美女没有衣服服务器 江阴创新网络技术创新服务 网络安全技术与实训期考试题 国家对网络安全的管理措施 对网络安全的几点认识 广西云赢互联网科技有限公司 加强网络安全国家应该怎么做 近年来网络安全事例 一窗通服务器正在响应 东莞莎莎互联网科技有限公司 网络安全守则演讲稿 哪里的服务器在张家口 华为方舟手机版双人开服务器 在建立网络安全监测预警和 sqlplus备份数据库 定义内部数据库like 软件开发过程中会遇到哪些 南阳网络技术公司 网络安全技术与实训期考试题 看服务器版本命令是什么 江苏绿和软件开发 电脑我的世界mod服务器推荐 七日杀布丁服务器怎么加管理 服务器日志收集 汇丰银行广州软件开发办公地点 普陀区电商软件开发定制平均价格
0