makefile怎么用

1.如何使用makefile

make工具,只是一个批处理工具。如果只是使用makefile,那么只要有make.exe这个文件就可以了。

make工具会根据makefile里面的信息来编译程序。在makefile里面,一般指定了用什么编译器,用什么程序链接,以及需要那些库的支持,还有一些其它的设置。

如果你没有相应的编译工具和库的支持,make会出错的。所以,你必须要先弄清楚,你拿到的c程序,需要什么样的环境才能编译。一般来说,你看看它C头文件和makefile里面的信息就应该能知道。

2.makefile怎么用

makefile 就是告诉make程序怎么编译文件。比如说要生成可执行程序my_exe.exe.该程序需要三个文件a1.c a2.c 和 a3.c

那么你的makefile文件就可以写为

my_exe.exe: a1.o a2.o a3.o

ld -o my_exe.exe a1.o a2.o a3.o

%.o : %.c

cc -o $@ $<

第一段是说我要生成文件my_exe.exe需要三个.o文件;要是都有就会执行下面的链接命令;;;如果有的.o不存在就会执行下面那段代码。下面的意思是一个.o文件依赖于与它同名的。c要是这个.c文件存在,则编译并成.o,若还不存在就会报错

3.linux中怎么用makefile

一、Makefile的规则在讲述这个Makefile之前,还是先来粗略地看一看Makefile的规则。

target 。 : prerequisites 。

command。

.target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。

prerequisites就是,要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。

(任意的Shell命令)这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。二、一个示例正如前面所说的,如果一个工程有3个头文件,和8个C文件,为了完成前面所述的那三个规则,的Makefile应该是下面的这个样子的。

edit : main.o kbd.o command.o display.o \insert.o search.o files.o utils.occ -o edit main.o kbd.o command.o display.o \insert.o search.o files.o utils.omain.o : main.c defs.hcc -c main.ckbd.o : kbd.c defs.h command.hcc -c kbd.ccommand.o : command.c defs.h command.hcc -c command.cdisplay.o : display.c defs.h buffer.hcc -c display.cinsert.o : insert.c defs.h buffer.hcc -c insert.csearch.o : search.c defs.h buffer.hcc -c search.cfiles.o : files.c defs.h buffer.h command.hcc -c files.cutils.o : utils.c defs.hcc -c utils.cclean :rm edit main.o kbd.o command.o display.o \insert.o search.o files.o utils.o反斜杠(\)是换行符的意思。这样比较便于Makefile的易读。

可以把这个内容保存在文件为“Makefile”或“makefile”的文件中,然后在该目录下直接输入命令“make”就可以生成执行文件edit。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下“make clean”就可以了。

在这个makefile中,目标文件(target)包含:执行文件edit和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h文件。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件 edit 的依赖文件。

依赖关系的实质上就是说明了目标文件是由哪些文件生成的,换言之,目标文件是哪些文件更新的。在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以一个Tab键作为开头。

记住,make并不管命令是怎么工作的,他只管执行所定义的命令。make会比较targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的话,那么,make就会执行后续定义的命令。

这里要说明一点的是,clean不是一个文件,它只不过是一个动作名字,有点像C语言中的lable一样,其冒号后什么也没有,那么,make就不会自动去找文件的依赖性,也就不会自动执行其后所定义的命令。要执行其后的命令,就要在make命令后明显得指出这个lable的名字。

这样的方法非常有用,可以在一个makefile中定义不用的编译或是和编译无关的命令,比如程序的打包,程序的备份,等等。三、makefile中使用变量在上面的例子中,先让看看edit的规则:edit : main.o kbd.o command.o display.o \insert.o search.o files.o utils.occ -o edit main.o kbd.o command.o display.o \insert.o search.o files.o utils.o可以看到[.o]文件的字符串被重复了两次,如果的工程需要加入一个新的[.o]文件,那么需要在两个地方加(应该是三个地方,还有一个地方在 clean中)。

当然,的makefile并不复杂,所以在两个地方加也不累,但如果makefile变得复杂,那么我们就有可能会忘掉一个需要加入的地方,而导致编译失败。所以,为了makefile的易维护,在makefile中可以使用变量。

makefile的变量也就是一个字符串,理解成 C语言中的宏可能会更好。比如,声明一个变量,叫objects, OBJECTS, objs, OBJS, obj, 或是 OBJ,反正不管什么啦,只要能够表示obj文件就行了。

在makefile一开始就这样定义:objects = main.o kbd.o command.o display.o \insert.o search.o files.o utils.o于是,就可以很方便地在的makefile中以“$(objects)”的方式来使用这个变量了,于是的改良版makefile就变成下面这个样子:objects = main.o kbd.o command.o display.o \insert.o search.o files.o utils.oedit : $(objects)cc -o edit $(objects)main.o : main.c defs.hcc -c main.ckbd.o : kbd.c defs.h command.hcc -c kbd.ccommand.o : command.c defs.h command.hcc -c command.cdisplay.o : display.c defs.h buffer.hcc -c display.cinsert.o : insert.c defs.h buffer.hcc -c insert.csearch.o : search.c defs.h buffer.hcc -c search.cfiles.o : files.c defs.h buffer.h command.hcc -c files.cutils.o : utils.c defs.hcc -c utils.cclean :rm edit $(objects)于是如果有新的 .o 文件加入,只需简单地修改一下 objects 变量就可以了。四、make是如何工作的在默认的方式下,输入make命令通过makefile编译程序时,具体的内部机制如下:1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。

2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。3、如果edit文件。

4.makefile到底是干什么用的

一个工程(project)中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

Makefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的

Makefile。编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。

如果你使用的是带有图形用户界面的集成化开发环境如VisualStudio,一般用不着手动编写makefile文件,当你需要时,VS可以为你自动生成。

5.如何自己编写Makefile

相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云。

在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide。其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次。

你也可以自己写makefile,让别人对你头来羡慕的目光。 下面本人介绍一下自己的学习成果,初学阶段,欢迎大家多多指正。

简单的说,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至可以在makefile中执行shell脚本。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

关于程序的编译和链接 一般来说,无论是C还是C++,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile),一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。

编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。

链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(O文件或是OBJ文件)来 链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给 中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。

下面我们开始看看如何自己写出makefile。 Makefile的规则 目标 : 需要的条件 (注意冒号两边有空格) 命令 (注意前面用tab键开头) 解释一下: 1 目标可以是一个或多个,可以是Object File,也可以是执行文件,甚至可以是一个标签。

2 需要的条件就是生成目标所需要的文件或目标 3 命令就是生成目标所需要执行的脚本 总结一下,就是说一条makefile规则规定了编译的依赖关系,也就是目标文件依赖于条件,生成规则用命令来描述。在编译时,如果需要的条件的文件比目标更新的话,就会执行生成命令来更新目标。

下面举个简单的例子说明。如果一个工程有3个头文件,和8个C文件,我们为了完成前面所述的那三个规则,我们的Makefile应该是下面的这个样子的。

edit : main.o kbd.o command.o display.o / insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o / 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文件中,然后执行make就可以进行编译,执行make clean就可以删除所有目标文件。解释一下,也就是说生成最终的目标文件edit,依赖于一系列的.o目标文件,而这些.o文件又是需要用源文件来编译生成的。

需要注意的是,clean后面没有条件,而clean本身也不是文件,它只不过是一个动作名字,其冒号后什么也没有,那么,make就不会自动去找文件的依赖性,也就不会自动执行其后所定义的命令。 make是如何工作的 在默认的方式下,也就是我们只输入make命令。

那么, 1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。

3、如果edit文件不存在,或是edit所依赖的后面的 .o 文件的文件修改时间要比edit这个文件新,那么,他就会执行后面所定义的命令来生成edit这个文件。 4、如果edit所依赖的.o文件也不存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。

(这有点像一个堆栈的过程) 5、当然,你的C文件和H文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件生命make的终极任务,也就是执行文件edit了。 makefile中使用变量 前面的知识已经足以让你自己完成一个简单的makefile了,不过makefile的精妙之处远不止如此,下面来看看如何在makefile中使用变量吧。

在上面的例子中,先让我们看看edit的规则: edit : main.o kbd.o command.o display.o / insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o / insert.o search.o files。.。

6.求makefile的用法

example: main.o myprint.o

gcc -o example main.o myprint.o

main.o: main.c myprint.h

gcc -c main.c myprint.h

myprint.o:myprint.h myprint.c

gcc -c myprint.c myprint.h

clean:

rm example main.o myprint.o

写全了

makefile怎么用

转载请注明出处育才学习网 » makefile怎么用

知识

怎么走用英语怎么说

阅读(349)

本文主要为您介绍怎么走用英语怎么说,内容包括怎么走用英语怎么说,“走”用英语怎么说,走的英语怎么说。走的英文:go; walk; run; move; pad; go 读法 英 [gəʊ] 美 [go] 作不及物动词的意思是:走;达到;

知识

volume怎么用

阅读(266)

本文主要为您介绍volume怎么用,内容包括怎么用volume,股票volume指标怎么应用尤其是其中的柱状图怎么用,股市曲线VOLUME怎么使用。成交量/成交金额及其均线图(volume)指标说明精明的投资者总是很关心成交量(或成交金额,以下表述略)的变化,成交量

知识

专款余额怎么用

阅读(299)

本文主要为您介绍专款余额怎么用,内容包括移动的专款余额怎么用,专款余额怎么用,移动卡中专款余额是什么意思,有什么用。专款余额常见问答专款提醒规则:(一)客户已欠费停机时,无论客户是否有专款余额,都只提醒欠费总金额,不提醒专款余额。(二)客户

知识

墙纸粉怎么用

阅读(271)

本文主要为您介绍墙纸粉怎么用,内容包括墙纸粉怎么用,墙纸粉怎么用,墙纸粉怎么用。要看是什么材质的墙纸胶,如果是淀粉胶(即一盒淀粉加一罐胶浆),调对的时候需要先溶解淀粉,若是动态最好先用温水,温度不宜过高,溶解后搅拌平

知识

怎么把键盘当鼠标用

阅读(350)

本文主要为您介绍怎么把键盘当鼠标用,内容包括怎样利用键盘代替鼠标,win7怎样用键盘来代替鼠标使用,键盘如何当鼠标用。首先,点击三键开启鼠标键(任务栏会有图标显示开启):Alt键+shift键(左边的shift键有效)+num lk (也有叫NUM LO

知识

隔空锁屏怎么用

阅读(289)

本文主要为您介绍隔空锁屏怎么用,内容包括怎么使用隔空锁屏啊,那个隔空解锁怎么设置,我的隔空解锁我设置好了怎么用不来。解锁方法一:刷机重新输入ROM。可以让你设置的密码锁消除,前提是你会刷机。解锁方法二:双wipe 从刷机爱好者的专业角度来

知识

水彩颜料怎么用

阅读(313)

本文主要为您介绍水彩颜料怎么用,内容包括干水彩怎么用,水彩颜料怎么使用,水彩颜料怎么用。水彩颜料使用方法分两种,干画法和湿画法:干画法是一种多层画法。用层涂的方法在干的底色上着色,不求渗化效果,可以比较从容地一遍遍着色,较易

知识

papa怎么样用

阅读(274)

本文主要为您介绍papa怎么样用,内容包括papa的详细使用方法及作用是什么,papa使用方法具体是怎么用的,papa的使用方法是什么使用中会情况。PAPA使用方法:临睡前先用冲洗来器冲洗阴道。2、内裤垫好护垫,防止将内裤弄脏。3、身体平躺,将装有凝胶

知识

海贼王用日语怎么说

阅读(370)

本文主要为您介绍海贼王用日语怎么说,内容包括海贼王用日语怎么说,海贼王的日语怎么说,海贼王的日文怎么写。《海贼王》日语翻译:ワンピース。《航海王》是日本漫画家尾田荣一郎作画的少年漫画作品,在《周刊少年Jump》1997年34号开始连载。改

知识

用粉底液怎么补妆

阅读(241)

本文主要为您介绍用粉底液怎么补妆,内容包括用粉底液要怎么补妆,用粉底液要怎么补妆,粉底液脱妆了怎么补妆浮粉补妆小技巧让底妆。补妆要用粉底液还是粉饼?其实主要看本身肌肤的溶妆程度,如果肌肤出油严重,或者汗水令粉感消失达60%时,最好用粉

知识

洗澡刷怎么用

阅读(266)

本文主要为您介绍洗澡刷怎么用,内容包括沐浴刷应该怎么用啊,洗澡的浴刷如何使用,沐浴刷SpaSonic的使用方法。洗澡刷好一点,最好是两天用一次。1.洗澡刷,包括手柄及刷具,刷具包括装沐浴乳的盒子及海绵,海绵装在盒子上,盒子上有注入沐浴乳用的活动

知识

家用燃气热水器怎么用

阅读(261)

本文主要为您介绍家用燃气热水器怎么用,内容包括家用燃气快速热水器使用步骤,燃气热水器首次使用步骤,家用燃气快速热水器怎么用。热水器使用步骤:首先保证天然气是充足的,而且经过检查可以正常使用。

知识

90用英语怎么说

阅读(252)

本文主要为您介绍90用英语怎么说,内容包括190的英语单词,90英语怎么说,90用英文怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine 10 te

知识

液体创可贴怎么用

阅读(233)

本文主要为您介绍液体创可贴怎么用,内容包括液体创可贴怎么用使用液体创可贴的注意事项,日本液体创可贴具体怎么用,液体创可贴如何撕下来。液体创可贴怎么用 液体创可贴是装在小瓶子里的溶剂,与传统的绷带创可贴从外形到性质都是不一样的,使

知识

javamakefile怎么写

阅读(218)

本文主要为您介绍javamakefile怎么写,内容包括如何写一个在linux环境下的Java程序的makefile,如何写一个在linux环境下的Java程序的makefile,makefile怎么写。如何写一个在linux环境下的Java程序的makefilelex.yy.c: guish.lflex guish.l l

知识

makefileclean怎么写

阅读(262)

本文主要为您介绍makefileclean怎么写,内容包括makefile中的clean命令,如何写Makefile,如何写一个简单的Makefile。hello: hello.ogcc -o hello hello.ohello.o: hello.cgcc -c hello.cclea

知识

linuxmakefile怎么写

阅读(184)

本文主要为您介绍linuxmakefile怎么写,内容包括使用linux编程怎么写makefile,如何在linux下写makefile,linux下makefile用什么写。Makefile语法基础在Linux下,自动化编译工具是通过make命令来完成的(一些工具厂商也提供了它们自己的make命令,

知识

makefile怎么写install

阅读(186)

本文主要为您介绍makefile怎么写install,内容包括makefile中怎么写install格式,此makefile文件中,install部分可以这么写吗,Makefile规则中,如下写法是什么意思all:SUBDIRTARGET:=install。.PHONY: install--------------------原始内容---

知识

makefile怎么写

阅读(208)

本文主要为您介绍makefile怎么写,内容包括makefile怎么写,如何自己编写Makefile,如何写一个简单的makefile。如果你想写 Makefile 的话,那么你只要用一个不将制表符过滤掉的文本编辑器就可以了,用 vi/vim 可以,用 emacs 可以,

知识

怎么写makefile

阅读(203)

本文主要为您介绍怎么写makefile,内容包括怎么写Makefile,如何写makefile?,如何自己编写Makefile。有如下的文件:tmp/ +---- include/ | +---- f1.h | +----f2.h +----f1.c +----f

知识

makefile文件怎么写

阅读(203)

本文主要为您介绍makefile文件怎么写,内容包括Makefile文件怎么写,能帮我写一个吗,如何自己编写Makefile,如何写Makefile文件。如何自己编写Makefile 相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云。在日常学习

[/e:loop]