ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:25.26KB ,
资源ID:14411692      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14411692.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux下Makefile简单教程要点Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Linux下Makefile简单教程要点Word文档格式.docx

1、以Linux下gcc-c编译器为例,编译一个c语言程序需要经过以下几个步骤:1.将c语言源程序预处理,生成.i文件;2.预处理后的.i语言编译成汇编语言,生成.s文件;3.汇编语言经过汇编,生成目标文件.o文件;4.将各个模块的.o文件链接起来,生成一个可执行程序文件。我们知道,在Visual C+6.0中,可以新建一个工程,在一个工程当中能够包含若干个c语言文件,则编译的时候直接编译整个工程便可。Linux下无法为多个c语言文件新建工程,但可以通过MakeFile实现它们的整合编译。如上gcc-c编译步骤,如果使用Makefile则过程为:.C文件.o文件可执行文件当然,Makefile中也

2、加入了自己的设置变量方法与集成了一些函数,能够更有效地方便用户使用。/*分隔符*/target . : prerequisites .command.target也就是一个目标文件,可以是Object File,也可以是执行文件。prerequisites就是,要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。(任意的Shell命令)为了方便理解,我们来看一个示例:/*Makefile示例*/edit : main.o kbd.o command.o display.o /insert.o search.o files.o utils.ogcc -o ed

3、it main.o kbd.o command.o display.o /main.o : main.c defs.h #生成main.ogcc -c main.ckbd.o : kbd.c defs.h command.h #生成kdb.ogcc -c kbd.ccommand.o : command.c defs.h command.h #生成command.ogcc -c command.cdisplay.o : display.c defs.h buffer.h #生成display.ogcc -c display.cinsert.o : insert.c defs.h buffer.

4、h #生成insert.ogcc -c insert.csearch.o : search.c defs.h buffer.h #生成search.ogcc -c search.cfiles.o : files.c defs.h buffer.h command.h #生成files.ogcc -c files.cutils.o : utils.c defs.h #生成utils.ogcc -c utils.cclean :rm edit main.o kbd.o command.o display.o /*END*/执行输入:make -s edit反斜杠(/)是换行符的意思。我们来回忆一下

5、一个c语言编译的过程:c语言文件:main.c1.gcc main.c -c main.o2. gcc main.o -o main经过这两步便可以编译出可执行文件:main。现在我们再看上面的Makefile:这两句便生成main.o文件(main.c与defs.h为用到的源文件)。之后edit:main.o .gcc -o edit main.o .便会生成main可执行文件;同理,其他几个文件亦是。“edit”便是最终编译出的可执行文件名。可以看到Makefile只是整合了编译过程,也可以同时编译多个文件,其诞生的本质目的确实是为了实现自动化编译。1.2隐式规则make工具会自动使用gc

6、c -c命令,将一个扩展名为.c的c语言程序源文件编译成一个同名的.o目标文件。因此,在上例中,将:改为:defs.h(即去掉源同名c语言文件名,其他几个文件亦是如此。)这样便使用了隐式规则,隐式规则只是节省了敲代码的数量。可以注意到上述示例中末尾有几行代码:这几行代码并不会编译生成文件,可以把它们看成是Makefile里附加的实现小功能的程序(Makefile里藏了shell小程序),这个名称为clean的目标便叫做伪目标。我们可以直接输入:make clean来运行这个伪目标。显然,此伪目标可以清除之前生成的.o目标文件以及edit执行文件。为了防止命名的重复,可以使用.PHONY来显式地

7、指明一个伪目标:.PHONY clean这样就不会对clean这个目标的性质定义产生混乱了。/*看完上面应该基本知道Makefile用途了*/1.4搜索源文件在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中。所以,当make需要去找寻这些相关源文件时,需要在文件前加上路径,但最好的方法是把一个路径告诉make,让make自动去找。Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。如果定义了这个变量,那么,make就会在当前目录找不到的情况下,到所指定的目录中去找

8、寻文件了。VPATH = src:./headers上面的的定义指定两个目录,“src”和“./headers”,make会按照这个顺序进行搜索。目录由“冒号”分隔。(当然,当前目录永远是最高优先搜索的地方)。另一个设置文件搜索路径的方法是使用make的“vpath”关键字(注意,它是全小写的),这不是变量,这是一个make的关键字,这和上面提到的那个VPATH变量很类似,但是它更为灵活。它可以指定不同的文件在不同的搜索目录中。这是一个很灵活的功能。它的使用方法有三种:1.vpath 为符合模式的文件指定搜索目录。2.vpath 清除符合模式的文件的搜索目录。3.vpath清除所有已被设置好了

9、的文件搜索目录。vpath使用方法中的需要包含“%”字符。“%”的意思是匹配零或若干字符,例如,“%.h”表示所有以“.h”结尾的文件。指定了要搜索的文件集,而则指定了的文件集的搜索的目录。例如:vpath %.h ./headers该语句表示,要求make在“./headers”目录下搜索所有以“.h”结尾的文件。(如果某文件在当前目录没有找到的话)我们可以连续地使用vpath语句,以指定不同搜索策略。如果连续的vpath语句中出现了相同的,或是被重复了的,那么,make会按照vpath语句的先后顺序来执行搜索。如:vpath %.c foovpath %.c blishvpath %.c

10、bar其表示“.c”结尾的文件,先在“foo”目录,然后是“blish”,最后是“bar”目录。vpath %.c foo:bar而上面的语句则表示“.c”结尾的文件,先在“foo”目录,然后是“bar”目录,最后才是“blish”目录。/*分隔符*/为了增强Makefile的功能与增加程序的可移植性,Makefile中也使用了变量。看个例子:#此处为变量设置CC = gccFLAGS = -cobjects = main.o kbd.o command.o display.o /$(objects) CC -o edit $(objects)CC FLAGS main.cCC FLAGS k

11、bd.cCC FLAGS command.cCC FLAGS display.cCC FLAGS insert.cCC FLAGS search.cCC FLAGS files.cCC FLAGS utils.crm edit $(objects)此时,程序便有了很好的可修改性与移植性。可以用变量定义变量的值,Makefile中有三种方式:1.使用=操作符/*Makefile程序*/you = $(me)me = $(he)he = sheall: echo $(you)执行:make -s all输出:she程序将变量me的值赋给you,而变量me的值为变量he的值,he的值为she,因此变量you的值为she。Makefile中的变量值是可以使用后面的变量来定义的。但这样有危险,例如:a = $(b)b = $(a)将陷入无限

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1