linuxmakefile初学者学习心得_第1页
linuxmakefile初学者学习心得_第2页
linuxmakefile初学者学习心得_第3页
linuxmakefile初学者学习心得_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux makefile初学者学习心得在学习linux系统中认识到了 makefile是必须要掌握 的,一开始对于 makefile不理解,经过几天的学习对makefile 也有了一定的理解: 一、Makefile 的作用: makefile 关系到整个工程的编译规则,一个工程文件 不计其数,其按类型,功能,模块分别放在不同的目录下, makefile定义了一些规则来指定,哪些文件需要先编译,哪些文件需要重新编译,甚至进行更复杂的功能操作,因为 makefile就像一个shell脚本一样,其中也可以执行操作系 统命令。也就是通过 makefile规则编写makefile文件来实 现执行文件

2、的生成,makefile 对于多个文件生成的执行文 件,若有某个发生改变后,makefile可以发现直接去编译,从而减少了从头开始编译的时间,提高编译效率,同时也可 以很方便的修改文件,添加或者删去某些文件。二、Makefile 的规则:1. 隐晦规则:就是利用make的 自动推导的功能2. 显示规则:就是显示的在命令行中写出目标文件的 依赖关系3.变量的定义:就变量的宏替换4.文件指示:其中包括三部分的内容,一个是在一个 makefile 中引用另一个 makefile,就像c语言中的include 一样;另一个是根据某些情况指定makefile中的有效部分,就像c语言的预编译#ifdef

3、样;还有一个就是定义一个多 行的命令。5.注释:只有行注释用#号字符注释如果你的makefile中用到了 #你可以用“ # “转义一、把源代码编译成目标代码一般是一个规则。二、把所有中间文件编译链接在一起也是一个规则。编译需要一定的依赖文件,例如把一个.c文件编译为一 个可执行文件,则一般是通过:先有.c再到.0然后到 执行文件 例子:#要想生成目标,必须先有,然后调用命令行 gcc编译生成依赖对象:gcc c 0要想生成执行程序hello,必须先执行规则,然后调用命令行gcc链接生成hello hello:gcc - o hello在例子中要依赖调用gcc编译器才能生成,执行文件hello要

4、依赖Makefile可以理解为make程序进行解释的一种特殊脚 本。首先make找到Makefile 的入口规则,一般是all,或者 是用户在命令行指定的target顺着入口规则的依赖对象查找下去,检查一直查找到最终的目标,即只有被依赖而没有依赖其它对象的目标.即终目标从最终目标顺着依赖关系依次执行到入口规则,中间只有运行命令出错,才停止执行.如果是依赖文件,make会自动检测最后更新时间,只会 去执行已经修改过的文件,以此来减少编译时间三、在makefile 也可以定义变量。如赋值:定义变量可在规则中使用,Makefile 中使用变量Makefile 中的变量就像是 c语言的中宏一样 怎样定 义变量呢?我们在makefile 最上面定义一个变量OBJS =引用变量$(OBJS)这就等价于就像宏一样的会被替换掉,等价后如果一个生成文件需要依赖多个.0文件,则可用$(OBJS)代替。Makefile还有自推导,判断源代码的依赖关系的功能, 也就是不用我们去为了 .0文件而编写其他命令,例如:只要make看到一个*.o文件,它就会自动的把*.c 文件 加到 依赖关系中,如果 make 找到一个 那么就会使的依赖文件。并且 gcc - c也会被推导出来。所以我们的makefile就会简单多了在编写 makefile 是也有很多小细节值得注意,最为重 要的一点就是命开头的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论