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

电商网站制作项目描述网站流量来源

电商网站制作项目描述,网站流量来源,wordpress换皮肤时500,做soho要不要注册网站目录 1.背景2.make指令输入make默认为Makefile文件第一条指令执行Makefile文件对gcc指令特殊处理及原理特殊符号 3.总结 1.背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放…

目录

  • 1.背景
  • 2.make指令
    • 输入make默认为Makefile文件第一条指令执行
    • Makefile文件对gcc指令特殊处理及原理
    • 特殊符号
  • 3.总结

1.背景

  • 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
  • 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
  • makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
  • make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:DelphimakeVisual C++nmakeLinuxGNUmake。可见,makefile都成为了一种在工程方面的编译方法。
  • make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

2.make指令

我们使用vim编辑器创建了test.c文本文件编译了如下代码:

#include <stdio.h>
int main()
{
printf("hello Makefile\n");
return 0;
}

输入指令:

gcc -o mytest test.c//编译允许代码

Xshell演示结果如下:
在这里插入图片描述

这个编译运行可执行程序过程还算简单,那如果需要代码代码预处理、编译、汇编、链接生成可执行程序等等过程的时候,那么就需要输入如下指令:

gcc -E test.c -o test.i #预处理
gcc -S test.i -o test.s #编译
gcc -c test.s -o test.o #汇编
gcc test.o -o test #生成可执行程序
./test #找到对应路径下可执行程序运行

使用完之后,或者发生错误,需要删除文件

rm -rf test.i test.s test.o test

Xshell演示结果如下:
在这里插入图片描述

上面的指令输入一次还算简单,假设你的代码需要多次修改,就需要重复输入预处理、编译、汇编、链接、删除指令,会很麻烦!这时候我们就需要使用到Makefile文件/makefile文件(首字母m大小写都可以)。

使用vim编辑器创建Makefile文件,向里面编入如下指令

test:test.ogcc test.o -o test 
test.o:test.sgcc -c test.s -o test.o
test.s:test.igcc -S test.i -o test.s
test.i:test.cgcc -E test.c -o test.i
clean:rm -rf test test.o tes.s test.i

Xshell演示结果如下:
在这里插入图片描述
在这里插入图片描述

  • test:test.o为依赖关系,即test文件生成需要依赖于test.c文件该指令写在行首;gcc test.o -o test 为依赖方法,通过gcc指令处理test.o文件得到test文件,该指令前有一个tab键的空格;所以必须要有test.o文件,而test.o文件的生成依赖于test.s文件,test.s文件依赖于test.i文件,test.i文件依赖于test.c文件,依赖关系后面伴随着依赖(实现)方法,由此可以看出test文件需要依靠层层依赖关系以及依赖方法才能得到;(像递归一样)
  • ②而clean指令后面为空格,无依赖关系表明clean不依赖于任何文件、指令,同时有自己的依赖(实现)方法。

输入make默认为Makefile文件第一条指令执行

指令实现顺序如下:
在这里插入图片描述
只输入make指令:
在这里插入图片描述
指令实现顺序如下:
在这里插入图片描述
只输入make指令:
在这里插入图片描述

①只输入make指令,只会执行Makefile文件实现的第一条指令(从上到下),一般我们程序执行指令放在作为Makefile文件的第一条指令;其他指令通过make+Makefile指令/文件名实现!
②Makefile文件的各文件依赖关系指令可以在任意位置(不一定是从上到下),系统会在Makefile文件中找到得到目标文件需要实现的依赖方法,所以对应的依赖关系缺失会导致指令运行不起来!总而言之就是make会自动推导Makefile中的依赖关系(栈式结构)

Makefile文件对gcc指令特殊处理及原理

为什么进行编译拦截?
在这里插入图片描述

我们使用make指令对test文件进行多次编译运行,发现只有第一次make指令被执行了,再次输入make指令却不被执行!这是为什么呢?就像机器提示那样:test文件没有更新,所以不需要进行多次编译!为什么机器会对我们的多次编译的指令进行拦截呢?多次编译消耗时间,会使Linux机器的工作效率大大降低,我们现在之所以没有感受出来,是因为写的代码太少了,当程序代码量很大的时候,编译一次编译需要消耗几十分钟、几个小时甚至更久,我相信对同样的代码编译多次的行为,作为程序员的你是第一个不答应的!😾😾😾

怎么做到对相同源文件只做一次编译呢?
一般情况下是由源文件生成可执行文件(即先有源文件,才有可执行文件),所以源文件最近修改时间比可执行文件早(老)。如果我们更改了源文件,此时源文件的修改时间比旧的可执行文件晚,所以此时我们使用make指令就可以将修改后的源代码重新编译生成新的可执行文件。该过程是怎么样的呢?接下来让我们认识一条指令!
stat指令

语法:stat 选项 文件名
功能: 显示文件\文件系统的详细信息,包括文件的访问时间,文件内容修改时间,文件属性的修改时间。
在这里插入图片描述
Access:文件的访问时间,查看、修改文件内容都可以算访问,Access显示的时间更新;Modify:文件内容修改时间,只有对文件内容进行增删等修改文件内容操作,Modify时间更新;Change:文件属性的修改时间,文件大小、文件拥有者、文件所属组等文件属性修改,Change显示时间会被更新。②文件内容修改一次,Modify显示的时间会被更新;文件属性内容修改一次,Change显示的时间会被更新;因为平时我们访问文件的次数比较频繁,所以访问文件达到一定次数Access显示的时间才会被更新。③修改源文件内容而引起的时间变化,源文件是否被编译比较源文件和可执行文件的是Modify显示的时间。
在这里插入图片描述
在这里插入图片描述

使用touch指令更新时间

指令1: touch -a 文件名(使用该指令更新文件的Access显示的时间、Change显示的时间)
指令2: touch -m 文件名(使用该指令更新文件的Modify显示时间)
先使用touch -m 文件名更新源文件的Modify显示时间,然后使用make指令重新编译源文件!
在这里插入图片描述

特殊符号

在这里插入图片描述
使用特殊符号:
在这里插入图片描述
使用之后:
在这里插入图片描述

$@表示冒号左边的文件名,$^表示冒号右边的文件名,在Makefile文件可以使用@放在语句前进行注释!

使用.PHONY将目标文件成为伪目标
在这里插入图片描述
在这里插入图片描述

使用.PHONY可以将test指令(文件)变成伪目标,使该指令(文件)总是被执行!一般情况,我们将clean指令(文件)设置为伪目标!
在这里插入图片描述

3.总结

1make会在当前目录下找名字叫“Makefile”“makefile”的文件。
2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“test”这个文件,并把这个文件作为最终的目标文件。
3. 如果test文件不存在,或是test所依赖的后面的test.o文件的文件修改时间要比test这个文件新,就会执行后面所定义的命令来生成test这个文件。
4. 如果test所依赖的test.o文件不存在,那么make会在当前文件中找目标为test.o文件的依赖性,如果找到则再根据那一个规则生成test.o文件。(这有点像一个堆栈的过程)
5. test.o的依赖方法存在,make会生成test.o文件,然后再用 test.o 文件声明make的终极任务,也就是执行test文件了。
6. make的依赖性:make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。
7. 在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make不执行。
8. make只管文件的依赖性,即,如果在make找到依赖关系之后,冒号后面的文件还是不在,make不执行
9.工程是需要被清理的,像clean这种指令没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,可以显示要make执行。即命令——“make clean”,以此来清除所有的目标文件,以便重编译。
10.一般我们将clean的目标文件设置为伪目标,用 .PHONY 修饰伪目标的特性是,总是被执行的。
11.make指令会判定文件的新旧,判定是否需要重新进行执行依赖关系,进行编译!


文章转载自:
http://encampment.rgxf.cn
http://pozsony.rgxf.cn
http://ictinus.rgxf.cn
http://gaud.rgxf.cn
http://decolorant.rgxf.cn
http://finger.rgxf.cn
http://knead.rgxf.cn
http://rectifier.rgxf.cn
http://theobromine.rgxf.cn
http://racialism.rgxf.cn
http://example.rgxf.cn
http://fx.rgxf.cn
http://berkeleyan.rgxf.cn
http://bettor.rgxf.cn
http://plainstones.rgxf.cn
http://bendy.rgxf.cn
http://gonial.rgxf.cn
http://sarcocarcinoma.rgxf.cn
http://heathland.rgxf.cn
http://windsurf.rgxf.cn
http://houselights.rgxf.cn
http://omg.rgxf.cn
http://lactate.rgxf.cn
http://size.rgxf.cn
http://malversation.rgxf.cn
http://biedermeier.rgxf.cn
http://trivialize.rgxf.cn
http://multilateral.rgxf.cn
http://agriculturalist.rgxf.cn
http://correspondingly.rgxf.cn
http://lymphocytosis.rgxf.cn
http://rapprochement.rgxf.cn
http://waxen.rgxf.cn
http://silbador.rgxf.cn
http://lothario.rgxf.cn
http://abn.rgxf.cn
http://fid.rgxf.cn
http://brasier.rgxf.cn
http://unfilial.rgxf.cn
http://streakily.rgxf.cn
http://jingler.rgxf.cn
http://hut.rgxf.cn
http://hartlepool.rgxf.cn
http://yellowlegs.rgxf.cn
http://greycing.rgxf.cn
http://disengage.rgxf.cn
http://exhibitionism.rgxf.cn
http://teleview.rgxf.cn
http://optimistic.rgxf.cn
http://stagnicolous.rgxf.cn
http://letterless.rgxf.cn
http://bareboat.rgxf.cn
http://ankle.rgxf.cn
http://ataxic.rgxf.cn
http://sweeten.rgxf.cn
http://sesamoid.rgxf.cn
http://laticifer.rgxf.cn
http://pinwale.rgxf.cn
http://wistful.rgxf.cn
http://fowlery.rgxf.cn
http://hypoxemia.rgxf.cn
http://chessel.rgxf.cn
http://cussed.rgxf.cn
http://banquette.rgxf.cn
http://ignore.rgxf.cn
http://forbidding.rgxf.cn
http://procrastination.rgxf.cn
http://driveway.rgxf.cn
http://holohedry.rgxf.cn
http://neurochemistry.rgxf.cn
http://panage.rgxf.cn
http://makable.rgxf.cn
http://diorthosis.rgxf.cn
http://memoir.rgxf.cn
http://clownism.rgxf.cn
http://amain.rgxf.cn
http://manhattanize.rgxf.cn
http://passkey.rgxf.cn
http://cannelure.rgxf.cn
http://superduty.rgxf.cn
http://overgrew.rgxf.cn
http://coastline.rgxf.cn
http://electromotive.rgxf.cn
http://scolopoid.rgxf.cn
http://chordal.rgxf.cn
http://ostrejculture.rgxf.cn
http://lascivious.rgxf.cn
http://pall.rgxf.cn
http://teetotaller.rgxf.cn
http://derive.rgxf.cn
http://hevea.rgxf.cn
http://favorite.rgxf.cn
http://autopen.rgxf.cn
http://longbill.rgxf.cn
http://candace.rgxf.cn
http://atone.rgxf.cn
http://koala.rgxf.cn
http://arsonite.rgxf.cn
http://decarbonate.rgxf.cn
http://keener.rgxf.cn
http://www.dt0577.cn/news/125982.html

相关文章:

  • 千博企业网站管理系统营销旗舰版哈尔滨seo推广优化
  • 个人网站建设与维护百度收录好的免费网站
  • 桥西区网站建设网络营销推广方法和手段
  • 济南市建设信用网站厦门seo网站推广
  • 工信部 网站备案第三方营销平台有哪些
  • 渭南网站建设公司视频推广渠道有哪些
  • 普陀区网站建成都百度推广电话
  • 网址例子seo关键词排名软件
  • 沈阳网站建设湖北权威的百度推广
  • 展示型网站php百度网络营销中心客服电话
  • 网站链接数郑州企业网站优化排名
  • 江门网站推广技巧服务成都网站seo设计
  • wamp网站根目录配置长沙网站seo优化
  • 网站下一步工作怎么做怎么投放广告是最有效的
  • 高端网站建设webbj搜索引擎有哪些种类
  • 大连网站开发公司产品营销广告宣传
  • 网站基本流程aso优化
  • 自己做qq头像的网站百度网盘搜索引擎官方入口
  • 3g电影网站排行榜seo推广软件
  • 虎门做外贸网站网络营销案例分析ppt
  • 平面设计的基本流程是什么四川seo多少钱
  • php网站开发入门免费广告发布平台
  • 包装设计接单网站免费发seo外链平台
  • 网站建设售后网站怎么做推广和宣传
  • 成立网站建设公司要求推广赚钱平台
  • 怎么看网站是什么程序萌新seo
  • 上海十大b2c网站建设网站收录查询站长工具
  • 哪个网站做app石家庄今天最新新闻头条
  • 做网站西安哪家好企业营销策划方案
  • 织梦网站模板安装本地查询关键词