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

网站建设图标图片国际公司定义

网站建设图标图片,国际公司定义,跳转到手机网站,wordpress按钮打开外部链接前言#xff08;1#xff09;我们都知道#xff0c;在Linux中编译.c文件需要使用gcc -o .c文件的指令来将C文件变成可执行文件。但是我们有没有发现#xff0c;如果我们需要编译大一点的工程#xff0c;后面需要加上的.c文件是不是太多了#xff1f;感觉非常的麻烦。1我们都知道在Linux中编译.c文件需要使用gcc -o .c文件的指令来将C文件变成可执行文件。但是我们有没有发现如果我们需要编译大一点的工程后面需要加上的.c文件是不是太多了感觉非常的麻烦。2那有没有什么方便的方法帮助我们编译大型文件呢有也就是本章需要介绍的Makefile工具。需要注意的是Makefile工具如果真的想全部学内容很多想学的看Makefile详细英文文档或GNU Make 使用手册于凤昌中译版。本文仅用于新手小白学习。3本文将先简单介绍GCC的编译流程然后再讲解Makefile入门级使用。GCC编译流程单个.C文件变成可执行文件简单介绍1首先我们需要知道我们写的.c代码是无法直接使用的。如果是搞单片机的同学们都知道一个.c文件需要先再keil这种编译器中先编译然后将生成的hex文件烧录到单片机中。stlink那个虽然只需要我们点一下烧录就可以但是实际上也是这么做的2那么这个hex文件是什么东西呢我们打开hex文件发现里面都是16进制的数字而这些代码才是机器真正能够识别的代码。3那么从.c文件到这些机器可执行的过程具体是什么呢四个步骤预处理--编译--汇编--链接。4但是在日常生活中通常使用“编译”统称这 4 个步骤不是特指这 4 个步骤中的某一个。有时候也会有人将前三步称为编译讲法不一只要知道.c文件到机器可执行文件有四个步骤即可。预处理1预处理在C/C源文件中以“ #”开头的命令被称为预处理命令。预处理需要将1包含的文件放入原文件中。比如一个main.c中第一行写了#includestdio.h那么预处理阶段就需要将stdio.h文件包含到main.c中上面一大段就是stdio.h文件的内容。2宏定义展开。比如我们此刻宏定义了printf为CSDN所以在.i文件中CSDN部分变成了printf。3根据条件编译命令选择要使用的代码最后将这些东西输出到一个“ .i”文件中等待进一步处理。2格式gcc -E .c文件 -o .i文件3需要注意如果是直接gcc -o 可执行文件名 .c文件那么是直接完成了预处理编译汇编和链接的四个步骤。而如果是加上-E就是只执行预处理。编译1编译就是把 C/C代码(比如上述的“.i”文件)“ 翻译” 成汇编代码所用到的工具为 cc1。名字为CC1x86和arm板都有自己的CC1命令。2格式gcc -S .c或者.i文件 -o .s文件3程序的语法错误是在这一阶段进行判断的。汇编1汇编将汇编代码翻译成符合一定格式的机器代码二进制代码我们上面看到的是十六进制稍微转换一下就是二进制了。在Linux 系统上一般表现为 ELF 目标文件(OBJ 文件)用到的工具为 as。 x86 有自己的 as 命令 ARM 版也有自己的 as 命令也可能是 xxxx-as比如 armlinux-as。2格式gcc -c .c文件/.i文件/.s文件 -o .o文件3反汇编将机器代码转换为汇编代码这在调试程序时常常用到。链接1链接就是将上步生成的 OBJ 文件和系统库的 OBJ 文件、 库文件链接起来最终生成了可以在特定平台运行的可执行文件用到的工具为 ld 或 collect2。2格式gcc -o 可执行文件 .c/.i/.s/.o文件都可以多个.c文件编译编译多个.c文件1经过上面简介我们对gcc编译流程有了简单的了解。那么问题来了我们做项目不可能就只有一个.c文件很可能是几十个.c文件一个一个gcc -o这样编译很麻烦。那么我们介绍一下如何同时编译多个.c文件。2格式gcc -o 可执行文件 .c文件 .c文件 ...后面接多个.c文件都行修改项目中一个.c文件1经过上面这么一说发现随着.c文件的增加后面需要写入的.c也会更多有些许麻烦。但是这不是最让人感到头痛的事情。2假设我们突然发现这个文件需要修改将其中一个.c文件进行修改之后那么重新编译将会变的非常的麻烦。所以说非常麻烦。这个时候Makefile的作用就体现出来了。Makefile介绍Makefile需要做到的效果1在Linux中没有比较好的图形化编译工具。如果我们是在windows上编写程序以keilMDK举例只用点击左上方的编译按键即可编译程序。2而且在编译工程中我们会发现。如果我们按左边这个按键已经编译了一次程序之后第二次即使有些许改动编译就会非常快。而他右侧的这个即使程序没有修改编译也会非常慢。为什么呢因为第一个按键只会编译修改部分而第二个按键无论你有没有修改文件都会重新编译一次。所以我比较喜欢使用第一个编译按键我们这章需要讲的也是要实现这个功能。3Windows中的编译非常简单但是其实他内部的原理就是Makefile。Makefile语法简单介绍Makefile格式使用方法介绍1Makefile非常简单格式如下目标依赖【Tab】命令2目标和依赖都是文件为什么起这么奇怪的名字可能是从英文直翻的。上面这一段就像C语言的if函数他作用就是比较“依赖文件”和“目标文件”的更新时间。如果“依赖文件”比“目标文件”更加新那么执行“命令”来重新生成“目标文件”。3命令被执行的 2 个条件依赖文件比目标文件新或是目标文件还没生成。4Makefile的文件名必须是Makefile或者makefile。5在Makefile中想要执行命令格式是make 目标。但是我们常常看到很多人只输入了一个make因为如果我们不指定目标的话 默认执行的是第一个目标所对应的规则。这个不理解的话看下面的图文解释//将上述Makefile格式用C语言的形式进行表示 if“依赖文件”更新时间 “目标文件”更新时间执行命令Makefile图文介绍执行Makefile的图文解释1前面说了使用 make 目标来编译 如果我们不指定目标的话 默认执行的是第一个目标所对应的规则所以make与make test是等效的。这个命令执行流程是1首先判断test文件和main.o与test.o的更新时间。因为此时test文件不存在所以命令可以执行。可以看前面说的命令执行的两个条件2因为main.o与sub.o是由main.c与sub.c而来的。所以他们又会去执行make main.o和make sub.o。因为make sub.o中依赖文件s.c不存在所以无法比较程序终止。2当目标文件比依赖文件新的时候命令不会执行。而main.o在make test中已经执行了一次make main.o。而main.c没有被修改过所以这里提示main.o已经是最新的了。3命令执行的条件有依赖文件比目标文件新或者目标文件不存在。因为命令中永远不会产生目标文件所以make cleal与make s.o永远可以执行。4需要注意的是make clean没有依赖文件为什么可以执行是因为在程序先判断clean文件是否存在发现不存在所以就直接执行程序而不是去找依赖文件了。与第一问的makesub.o不同需要注意。Makefile伪目标--避免与当前目录下的同名文件1上面我们说了使用make clean可以将所有编译过程中产生的文件全部删除但是其中存在问题。假如当前文件夹下也存在一个叫做clean的文件名怎么办呢这种情况能够做的办法有很多种比如1将clean文件名改一下或者是2将makefile中的目标文件clean改成当前目录下不存在的一个文件名。不过现在我要说的方法是伪目标的方法。格式.PHONY 目标Makefile使用实战最简单编写方式和使用11上面我们说了假如一个项目有几千上万的.c文件而我们只更改一个.c文件。对每一个文件都进行预处理编译汇编和链接效率低下。2所以我们是不是可以先让每一个.c文件先进行前三步最后在进行一次链接呢这样做就可以让我们就可以先判断.c文件与.o文件.o文件就是执行了前三步骤后生成的更改时间。如果.o文件比.c文件更改时间更新那么就表示这一个.c文件没有被修改。如果.c文件比.o文件更改时间更新那么表示这一个文件被修改过了于是重新进行一次预处理编译和汇编。最后将最终的可执行文件名与所有.o文件的更改时间做对比如果可执行文件更改时间比.o文件的新那么就说明这个项目文件就没有被修改过。如果所有.o文件中有一个.o文件比可执行文件更改时间更新那么就将所有.o文件重新进行一次链接。3需要注意命令部分前面需要使用TAB键进行缩进不能是空格4当文件夹中有了Makefilemakefile也可以文件之后只需要输入make命令就可以执行Makefile文件了。进阶编写2-通配符和自动化变量1有了Makefile文件我们对文件进行编译方便了很多。但是我们还是觉得麻烦因为我们每一个项目都需要重新进行一次编写Makefile。而且如果项目文件一多编写Makefile也极其花费时间。2于是我们可以使用通配符和自动化变量比如前面的main.o和sub.o都可以统一是使用%.o表示main.c和sub.c统一使用%.c表示。$表示所有目标文件$表示第一个依赖文件 如果依赖模式是% 那么它就表示一系列文件。%为通配符 类似 linux上的 *$^表示所有依赖文件%.c表示所有.c文件%.o表示所有.o文件第一行不能使用%.o虽然%.o可以表示所有的.o文件但是在第一行不能使用%.o代替必须一个一个的.o文件写出来这个时候有人会抱怨还是太麻烦了别慌后面讲解进阶编写3的时候会有解决办法。正常写法进阶编写3--自动包含.o文件1根据上面的讲解之后我们会发现此时的Makefile文件已经比我们之前直接GCC编译好很多了。但还是可以完善就是让他自动包含.o文件。这样才可以真正的实现我们一开始说的模拟windows中的编译按键。2在这里我会先讲解Makefile的变量及其变量赋值然后再讲解Makefile 的函数最后才会说到如何编写最终版的Makefile文件。变量及变量赋值这部分主要是有了解就行不然最终的进阶编写看不懂。延时变量立即变量延时变量只有第一次定义时赋值才成功如果曾定义过此赋值无效使用“” 赋值是追加赋值 是在我们前面定义的好的字符串里面在添加进去新的字符串示例使用“” 来赋值 是延迟赋值。按照正常的思路Aa那么第二行B就应该是a。但是因为再Makefile中是延迟赋值所以B最终的值是b示例使用“ ” 给变量赋值 是立刻赋值。这个就可以按照正常的C语言执行流程来变量跑到那里赋值就是那里不会因为后面的赋值而导致变量数值改变。示例如果前面赋值了就是之前的值即a如果前面没有被赋值即第一行没有就是当前值即b。示例使用“” 赋值是追加赋值 是在我们前面定义的好的字符串里面在添加进去新的字符串不过中间会有空格。Makfile函数wildcard 函数格式 $ (wildcard PATTENR)功能 展开指定的目录文件名之间用一个空格隔开解释比如我们需要查找当前目录或者子目录下的某一种文件。类似于Windows中有时候需要在一个目录中选中目标文件可以选择只显示某一种类型文件这样方便我们查找到目标文件。notdir函数格式 $ (notdir $ (var) )功能 去掉路径。解释上面查找到文件之后会显示文件的路径。假如我们不想看文件路径就可以使用这个函数。dir函数格式 $(dir names...)功能 取出目录 这里的目录指的是最后一个反斜杠/ 之前的部分 如果没有反斜杠/就返回当前。解释这个函数和notdir恰恰相反notdir是将目录去除留下目标文件。而dir是将目标文件去除留下路径。patsubst函数格式 $(patsubst 原文件 目标文件 文件列表功能 替换文件后缀解释如果文件列表里面有main.csub.chello.i。三个文件将原文件.c文件替换成.o文件最后文件列表的文件就是main.osub.ohello.i。foreach函数格式 $foreach var,list,text功能:把参数list中的单词逐一取出放到参数var所指定的变量中 然后再执行text 所包含的表达式。 每一次 text 会返回一个字符串解释这个函数可以理解为C语言中的printf函数。C语言中的printf“A%d”33就是listA%d就是test而var就是%d。实操进阶编写上面讲了这么多终于到了实操了。首先我们先展开当前目录下的所有.c文件然后将这些.c文件的前面的目录去除之后再将.c替换成.o注意实际的文件名没有被替换。最后将var3的值放在test之后即可。
http://www.hkea.cn/news/14380091/

相关文章:

  • 超八成搜索网站存在信息泄露问题什么是网络营销环境?
  • php网站开发程序编译软件电子商务网站帮助中心该怎么更好地设计
  • jsp网站开发软件哪个网可以网站备案
  • 怎样查看网站是用什么做的简单企业网站源码
  • 免费网站怎么建立响站怎么建设网站
  • 如何修改网站后台密码wordpress 文章标题
  • 徐州企业网站设计wordpress+整合js
  • 制作网站学什么专业公司网站建设都需要什么内容
  • ui设计师怎么做自己的网站建程网官网
  • 丽水网站建设公司公司网站的建设
  • 响应式网站的设计趋势wordpress 列表函数
  • 南阳公司网站制作网站建设的方法有
  • 抚顺您做煮火锅网站wordpress调用指定分类的文章
  • 网站设计报价怎么做wordpress创建搜索框
  • seo网站有优化培训吗wordpress爱客0.9
  • 安徽国贸网站建设做h5网站制作
  • php做网站浏览量赣州市人才网
  • 有那种网站么四面山网站建设
  • 网站界面(ui)设计形考任务1自己做的网站打开显示很慢
  • 做餐饮加盟的网站软件开发技术文档范文
  • 哈尔滨网站优化流程建设什么网站比较好
  • 北京做网站建设比较好的公司网站建设对比
  • 西安建网站公司wordpress超简洁企业主题
  • 企业建设网站软件医院网站建设公司价格
  • 传奇官方网站高唐企业建网站服务商
  • 百度统计网站速度诊断工具三门峡建设网站哪家好
  • 新乡网站自然优化做网站的软件帝国
  • 余志国外贸网站建设frontpage制作个人网页教程
  • 河北网站备案查询系统网站制作 php
  • 个人网站怎么推广素材网站在哪里找