我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux makefile文件有哪些内容

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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文件有哪些内容”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

linux makefile文件有哪些内容

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux makefile文件有哪些内容

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

Linux系统so文件内容有哪些

本篇内容主要讲解“Linux系统so文件内容有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统so文件内容有哪些”吧!1.so文件简介:也是ELF格式文件,共享库(动态库),类似
2023-06-28

makefile怎么读取文件内容

在Makefile中,你可以使用`$(shell)`函数来读取文件内容。假设你的文件名为`file.txt`,你可以使用以下命令来读取文件内容:```makefilecontent := $(shell cat file.txt)```上述
2023-09-12

makefile文件的作用有哪些

makefile文件的作用有以下几个方面:1. 自动化编译:makefile文件可以指定编译工具和编译选项,以及编译的依赖关系和目标文件,使得程序的编译过程可以自动化进行。2. 管理项目:makefile文件可以管理项目中的多个源文件和目标
2023-09-12

Linux系统中的文件目录有哪些内容

这篇文章主要介绍“Linux系统中的文件目录有哪些内容”,在日常操作中,相信很多人在Linux系统中的文件目录有哪些内容问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统中的文件目录有哪些内容”的疑
2023-06-16

Linux系统查看文件内容命令有哪些

这篇“Linux系统查看文件内容命令有哪些”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“Linux系统查看文件内容命令有哪些”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所
2023-06-28

linux系统日志文件包含的内容有哪些

今天小编给大家分享一下linux系统日志文件包含的内容有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-02-17

Node的文件系统有哪些内容

今天小编给大家分享一下Node的文件系统有哪些内容的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、Node的文件系统1、F
2023-06-29

linux中inode有哪些内容

linux中inode有哪些内容,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、inode是什么?文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇
2023-06-05

php文件中包含的内容有哪些

今天小编给大家分享一下php文件中包含的内容有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php文件中可包含的内容:1
2023-07-05

php读取文件内容的方法有哪些

PHP读取文件内容的方法有以下几种:1. file_get_contents():该函数用于将整个文件内容读取到一个字符串中。可以接受文件名或URL作为参数。2. fopen()和fread():使用fopen()函数打开文件,然后使用fr
2023-09-26

php写入文件内容的方法有哪些

在PHP中,可以使用以下方法来写入文件内容:1. 使用`file_put_contents()`函数:该函数将一个字符串写入文件中。如果文件不存在,则创建新文件。如果文件已存在,则覆盖文件内容。示例代码如下:```php$file = 'e
2023-08-11

golang读取文件内容的方法有哪些

在 Golang 中,我们可以使用以下几种方法来读取文件的内容:使用 ioutil 包中的 ReadFile 函数:使用 ioutil 包中的 ReadFile 函数可以直接读取整个文件的内容,并将其作为字节切片返回。示例代码如下所示:i
2023-10-20

java修改文件内容的方法有哪些

Java 修改文件内容的方法有以下几种:1. 使用FileWriter和BufferedWriter类:通过创建FileWriter对象和BufferedWriter对象,将文件内容读取到内存中,然后对文件内容进行修改,最后再将修改后的内容
2023-08-29

linux用户主目录有哪些内容

本文小编为大家详细介绍“linux用户主目录有哪些内容”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux用户主目录有哪些内容”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。用户目录介绍:/home: 系统默
2023-06-28

C++头文件中包含哪些内容

C++头文件中包含哪些内容,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C++头文件之C、传统 C++ #include < assert.h>//设定插入点 #inc
2023-06-17

SpringBoot获取配置文件内容的方式有哪些

这篇文章主要介绍“SpringBoot获取配置文件内容的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot获取配置文件内容的方式有哪些”文章能帮助大家解决问题。前言现有配置
2023-07-05

python清除html文件中内容的方法有哪些

这篇文章给大家分享的是有关python清除html文件中内容的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python清除html文件中内容的方法:1、使用join方法,代码为【pat = re.co
2023-06-06

Linux文件工具有哪些

本篇内容主要讲解“Linux文件工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux文件工具有哪些”吧!1.diff命令我喜欢先介绍这款最初的Unix命令行工具,它为你显示了两个计
2023-06-15

编程热搜

目录