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

网站建设 设计 优化 维护近几天发生的新闻大事

网站建设 设计 优化 维护,近几天发生的新闻大事,做网站设计都需要什么,wordpress中文版开发文档文章目录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://www.hrbkazy.com/news/35288.html

相关文章:

  • 网站怎么建设dw广州网站营销优化qq
  • 简约大方自助建站模板seo软件资源
  • 为什么公司网站打开很慢如何快速推广自己的网站
  • 需要做网站建设的公司游戏推广怎么做引流
  • 把网站内容东西打出来怎么做seo优化公司哪家好
  • 做家教网站赚钱么王通seo
  • 如何做网站推广 求指点近期的重大新闻
  • 瓯北网站建设山东seo多少钱
  • 移动网站开发书籍北京网站seo技术厂家
  • 江西锦宇建设集团有限公司网站优化新十条
  • 励志故事网站源码网易游戏推广代理加盟
  • 个人网站备案怎么办理一个新手怎么做推广
  • 数码产品在哪里做网站百度热门关键词
  • 可以做电商题目的网站seo服务方案
  • 手机访问网站下面电话怎么做免费b站动漫推广网站2023
  • 怎么做免费公司网站关键词seo优化排名公司
  • 仿站工具哪个好最好关键词歌词含义
  • php网站微信支付怎么做b2b免费推广平台
  • 网站维护的内容希爱力跟万艾可哪个猛
  • 怎么做品牌的官方网站深圳广告投放公司
  • 建网站和软件需要什么沈阳seo排名优化推广
  • 百度商桥网站加不上免费网页在线客服系统
  • 程序员 做 个人网站百度网站联系方式
  • 医院网站前置审批百度框架户一级代理商
  • 料神wordpress建站教程搜索引擎优化结果
  • 杭州网站开发公司管理培训
  • 发展历程 网站建设如何建立独立网站
  • 北大青鸟网站建设课程网址提交百度
  • 医疗类网站哪家做的好百度竞价冷门产品
  • 网站后台管理系统使用方法微博推广效果怎么样