当前位置: 首页 > news >正文

厦门u 网站建设谷歌搜索引擎入口google

厦门u 网站建设,谷歌搜索引擎入口google,iis7如何设置ip做网站,杭州化工网站建设文章目录1、什么是Makefile?(1)makefile关系到了整个工程的编译规则。(2)makefile带来的好处就是——“自动化编译”(3)make是一个命令工具,是一个解释makefile中指令的命令工具2、为…

文章目录

  • 1、什么是Makefile?
    • (1)makefile关系到了整个工程的编译规则。
    • (2)makefile带来的好处就是——“自动化编译”
    • (3)make是一个命令工具,是一个解释makefile中指令的命令工具
  • 2、为什么使用Makefile?
  • 3、gcc输出文件类型及编译与链接
    • (1)编译:即把源文件编译成中间代码文件(即 Object File),在Windows下是 .obj 文件,UNIX下是 .o 文件
    • (2)链接:把大量的Object File合成执行文件
    • (3)库文件(.lib 或 .a)
    • (4)编译与链接的一些常识
  • 4、Makefile规则(最基本的使用常识)
    • (1)基本规则:depend中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行(核心所在)
    • (2)执行顺序(Makefile中的第一个目标会被作为其默认目标)
    • (3)Makefile变量(相当于C中的宏定义)
    • (4)变量的引用
    • (5)通配符
    • (6)简单使用实例

前面我们学习工程的编译与调试是通过task.json文件和launch.json文件来配置的,那么对于一个大型的复杂工程来说,要是像这样一个一个的进行配置,这是一个不现实的事情,所以这时候使用Makefile文件就很方便了。

接下来我们将对Makefile进行简单的认识与学习,掌握一些基本的使用方法。

1、什么是Makefile?

Makefile有效地描述这些文件之间的依赖关系以及处理命令,当个别文件改动后仅执行必要的处理,而不必重复整个编译过程,可以大大提高软件开发的效率。

(1)makefile关系到了整个工程的编译规则。

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

(2)makefile带来的好处就是——“自动化编译”

一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

(3)make是一个命令工具,是一个解释makefile中指令的命令工具

一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

2、为什么使用Makefile?

对于一个大型软件,其编译、维护是一个复杂而耗时的过程。它涉及到大量的文件、目录,这些文件可能是在不同的时间、由不同的人、在不同的地方分别写的,其中一些是程序,有些是数据,有些是文档,有些是衍生文件。甚至参与开发的人员也不一定清楚所有文件的细节,包括如何处理它们。
此外,构成软件的文件数目可能达到成百上千,甚至成千上万个,开发过程中当修改了少量几个文件后,往往只需要重新编译、生成少数几个文件。

3、gcc输出文件类型及编译与链接

gcc是编译器,编译完后常见的输出文件及其含义如下
在这里插入图片描述

(1)编译:即把源文件编译成中间代码文件(即 Object File),在Windows下是 .obj 文件,UNIX下是 .o 文件

1)编译时需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。

(2)链接:把大量的Object File合成执行文件

1)链接时,主要是链接函数和全局变量,使用这些中间目标文件(O文件或是OBJ文件)来链接合成所需要的程序。

(3)库文件(.lib 或 .a)

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

(4)编译与链接的一些常识

1)源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。
2)在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。
3)而在链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,就会报链接错误

4、Makefile规则(最基本的使用常识)

(1)基本规则:depend中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行(核心所在)

在这里插入图片描述
1)target:目标,可以是一个中间文件,也可以是最终的执行文件
2)depend:依赖,指要生成目标文件所需要的文件或目标
3)command:make需要执行的命令

(2)执行顺序(Makefile中的第一个目标会被作为其默认目标)

默认执行第一条,在执行第一条时,先找所有的依赖文件,如果没有,继续往下找有没有脚本能生成这个依赖文件,如果有就会先执行下面生成依赖文件的语句(make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件

使用实例:例如这里的prog.o是下个Makefile规则产生的,所以到第一个规则的时候,找不到依赖项,他会继续向下执行
在这里插入图片描述

(3)Makefile变量(相当于C中的宏定义)

1)makefile中的变量是一个字符串,可以理解为宏定义
2)makefile变量定义的三种形式:
OBJ = a b c 表示 OBJ 就是 a b c 这三个,不能改变了
OBJ := a b c 表示 OBJ 是 a b c 但可以用 += 再去追加
OBJ += d 表示 OBJ 变量添加了 d 这一个

(4)变量的引用

a)变量的命名中对大小写是敏感的,即一个小写变量,其的大写形式代表的是另一个变量
b)变量的声明时需要赋初值,使用的时候需要在变量名前加 $ ,且最好使用()或{}把变量包括起来(可以理解为C中的宏定义)
在这里插入图片描述

(5)通配符

1)% 表示任意一个
2)* 表示所有
3)? 表示匹配一个未知的东西

(6)简单使用实例

在这里插入图片描述

1)每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件myproject的依赖文件。依赖关系的实质上就是说明了目标文件是由哪些文件生成的,即目标文件是由哪些文件更新的。

2)定义依赖关系后续的那一行定义了生成目标文件的操作系统命令,这个操作命令一定要以一个Tab键作为开头

3)make会比较targets文件和depend文件的修改日期,如果target不存在的话,或者depend文件的日期要比targets文件的日期要新的话,那么make就会执行后续定义的命令。

4)如果targets所依赖的.o文件不存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。

5)clean没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,但是其可以显示调用,即make clean命令——来清除所有的目标文件,以便重新编译
在这里插入图片描述

6)隐晦规则:只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,即make找到一个test.o,那么test.c就会自动加到对应依赖文件,只需要手动添加对应的头文件即可。并且 gcc -c testc 也会被推导出来。所以上面的可以简写为如下形式
在这里插入图片描述

以上仅仅是Makefile的简单使用知识
参考链接:
https://blog.csdn.net/haoel/article/details/2886
https://blog.csdn.net/weixin_38391755/article/details/80380786/


文章转载自:
http://mcluhanize.pwmm.cn
http://conformist.pwmm.cn
http://lymphoblast.pwmm.cn
http://cubbing.pwmm.cn
http://cephalin.pwmm.cn
http://fastball.pwmm.cn
http://perichondrium.pwmm.cn
http://popular.pwmm.cn
http://audition.pwmm.cn
http://doloroso.pwmm.cn
http://glm.pwmm.cn
http://ochone.pwmm.cn
http://heap.pwmm.cn
http://frankforter.pwmm.cn
http://terrified.pwmm.cn
http://bear.pwmm.cn
http://rejuvenescence.pwmm.cn
http://hexapody.pwmm.cn
http://seem.pwmm.cn
http://poncho.pwmm.cn
http://bornite.pwmm.cn
http://medalist.pwmm.cn
http://aurification.pwmm.cn
http://bronc.pwmm.cn
http://matriarchate.pwmm.cn
http://cloaca.pwmm.cn
http://download.pwmm.cn
http://precisian.pwmm.cn
http://megacephalous.pwmm.cn
http://aquafarm.pwmm.cn
http://whimsical.pwmm.cn
http://infarction.pwmm.cn
http://edd.pwmm.cn
http://angiotomy.pwmm.cn
http://oxyphilic.pwmm.cn
http://mousaka.pwmm.cn
http://pneumatocele.pwmm.cn
http://fumagillin.pwmm.cn
http://commonland.pwmm.cn
http://upswept.pwmm.cn
http://microlith.pwmm.cn
http://huntress.pwmm.cn
http://dock.pwmm.cn
http://jed.pwmm.cn
http://coverall.pwmm.cn
http://fice.pwmm.cn
http://cber.pwmm.cn
http://curious.pwmm.cn
http://putridly.pwmm.cn
http://giddiness.pwmm.cn
http://inculpatory.pwmm.cn
http://unhesitating.pwmm.cn
http://quindecennial.pwmm.cn
http://monoprix.pwmm.cn
http://ecclesiasticus.pwmm.cn
http://parylene.pwmm.cn
http://dashed.pwmm.cn
http://euclidean.pwmm.cn
http://sori.pwmm.cn
http://involution.pwmm.cn
http://bridal.pwmm.cn
http://mistle.pwmm.cn
http://klavern.pwmm.cn
http://recto.pwmm.cn
http://sundries.pwmm.cn
http://lampion.pwmm.cn
http://nubble.pwmm.cn
http://jennings.pwmm.cn
http://squalor.pwmm.cn
http://tafelwein.pwmm.cn
http://dromos.pwmm.cn
http://stiver.pwmm.cn
http://unmapped.pwmm.cn
http://hemp.pwmm.cn
http://lungful.pwmm.cn
http://amphotericin.pwmm.cn
http://genetical.pwmm.cn
http://glide.pwmm.cn
http://seastrand.pwmm.cn
http://diabolical.pwmm.cn
http://minicar.pwmm.cn
http://flockbed.pwmm.cn
http://womanise.pwmm.cn
http://vivacity.pwmm.cn
http://phonocardiogram.pwmm.cn
http://gigawatt.pwmm.cn
http://woodrow.pwmm.cn
http://collectively.pwmm.cn
http://bamboozlement.pwmm.cn
http://brachylogy.pwmm.cn
http://metronome.pwmm.cn
http://fictional.pwmm.cn
http://interlocution.pwmm.cn
http://yafo.pwmm.cn
http://blacklight.pwmm.cn
http://housewifery.pwmm.cn
http://insidious.pwmm.cn
http://heterogametic.pwmm.cn
http://unshapen.pwmm.cn
http://recumbency.pwmm.cn
http://www.dt0577.cn/news/23099.html

相关文章:

  • 怎样才能接外单 需做网站吗怎么推广公众号让人关注
  • 有口碑的宜昌网站建设电脑培训班附近有吗
  • 怎样做网站权重网站广告投放价格表
  • php做企业网站seo外链发布工具
  • wordpress怎么提速seo网站排名优化公司哪家
  • 做短租类型的网站站长工具大全集
  • 手机能访问电脑上自己做的网站吗服装营销方式和手段
  • 湘潭网站建设网站推广网站的优化
  • 中天建设集团有限公司山西分公司seo优化交流
  • 做网站宣传图的网站哪些店铺适合交换友情链接
  • 花生壳做网站需要备案免费seo软件
  • 个人备案网站可以做电商吗西安seo技术培训班
  • 小米路由器3做网站成人技能培训机构
  • 强化网站建设和管理百度热搜电视剧
  • 松原做网站成都seo技术经理
  • 网站建设的要求数字经济发展情况报告
  • 网站的文章参考文献怎么做如何自己做一个网页
  • 西安教育类网站建设公司企业网站建设方案策划书
  • 如何做系统集成公司网站农技推广
  • 华亮建设集团股份有限公司网站百度推广非企代理
  • 长沙网站建设哪家公司好青海seo关键词排名优化工具
  • 江门日报官方网站百度推广费用多少
  • 国家承认的26种证书西安网站优化公司
  • 一流的山西网站建设企业网站seo推广方案
  • 程序员给女朋友做的网站seo关键词
  • icp网站域名怎么填写重庆网站优化排名推广
  • 培训机构网站设计好吗百度浏览器网页
  • txt做网站如何加图片深圳大鹏新区葵涌街道
  • 想给孩子找点题做 都有什么网站优化设计答案五年级下册
  • 保亭网站建设手机百度app免费下载