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

北京网站建设小鱼在线企业文化是什么

北京网站建设小鱼在线,企业文化是什么,上海公司沪牌价格,有趣的网站官网目录 gcc/g gcc和g的对比 "一段代码的使命" ●预处理 ●编译 ●汇编 ●链接 ●动/静态链接 make/makefile gcc/g gcc和g的对比 对于c文件而言,使用gcc或者g并没有什么区别。而对于cpp文件,在预处理、编译、汇编这三部分,…

目录

gcc/g++

gcc和g++的对比

"一段代码的使命"

●预处理

●编译

 ●汇编

●链接

●动/静态链接

make/makefile


gcc/g++

gcc和g++的对比

对于c文件而言,使用gcc或者g++并没有什么区别。而对于cpp文件,在预处理、编译、汇编这三部分,gcc和g++也是等价的。但是在链接阶段涉及c++的标准库时,gcc无法链接到这些库,必须加上-lstdc++ 选项。为了加深理解,测试一下:

 先使用gcc编译一下:gcc zz.cpp -o zz

 gcc无法链接到c++标准库,指令加上-lstdc++:

删除zz,使用g++在重新编译一下:g++默认以c++的方式进行编译(也可以编译c文件),链接的时候加上了一些c++的库。

 了解了gcc/g++后,先来复习下翻译的几个阶段,将下图的过程在linux环境下分步研究:

测试代码:

  1 #include <stdio.h>2 #define MAX 103 int main()4 {5   printf("Hello World!");6  //printf("Hi zxy!");7  //rprintf("How are you!");8 #ifdef MIN9  printf("Hello MIN");10 #else11  printf("Hello default");12 #endif13  printf("MAX = %d\n",MAX);                                                                                                                               14  return 0;15 }

"一段代码的使命"

●预处理

gcc –E mycode.c –o mycode.i

选项“-E”的作用是让 gcc 在预处理结束后停止编译过程,选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。

如上图所示,".i"文件删除了注释,完成了宏的替换,头文件的包含,进行了条件编译,#ifdef判断MIN是否被定义,结果是否定的。

●编译

 gcc –S mycode.i –o mycode.s

使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。gcc在把代码翻译成汇编语言之前,还要检查代码的规范性,是否有语法错误等等。

 ●汇编

gcc –c mycode.s –o mycode.o

汇编阶段是把编译生成的“.s”文件转成目标文件,使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码。

●链接

gcc mycode.o -o mycode

链接的过程将自己写的代码和标准库中的代码合在一起,形成了可执行程序。

./mycode

动/静态链接

file命令可以查看链接类型例如:file zz

动态链接链接的是动态库,在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”
 

 动态链接可以这样理解:假设你生活在象牙山村,村里只有一个大脚超市,赵四家需要用什么商品就从家走到超市去买。

 

 静态链接链接的是静态库,编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”。

 静态链接可以这样想象,刘能号称象牙山的小诸葛,日常生活用品每周都要去逛一次超市,它觉得很麻烦,在超市进货的时候他向自己家也进了货放在家里。

静态链接不受库升级和库删除的影响,因为已经拷贝了一份。但是占用了很大的空间。 

make/makefile

首先要了解到make是一个命令,makefile是一个文件。make和makefile搭配使用可以完成项目的自动化构建,当我们输入make命令,make会在当前目录下找名字为Makefile或者makefile的文件,而在makefile文件中可以定义一系列的规则来指定目录中的哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。也就是说makefile写好后配合make命令使用,输入命令后直接自动化编译,非常的便捷!

上图所示,是正常编译的大致过程,接下来试着将上述编译规则写入makefile文件中使用make自动化编译:

这里需要注意一下文件名称一定要是makefile或者Makefile,否则make是找不到的,依赖方法的定义一定要以Tab键开头:

当然上述的演示非常简单,主要是熟悉下make和makefile。在实际的项目中可能会有不计其数的源文件,这种情况下就可以在makefile中定义一系列的依赖关系和依赖方法。在上述的案例演示中zhang的生成是依赖于zhang.c的,这就是依赖关系。而gcc zhang.c -o zhang这个动作就是依赖方法。

●项目清理

为了方便工程清理,在makefile中定义一个clean,但是clean没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行。需要用“make clean”来执行,以此来清除所有的目标文件,以便重编译。

●伪目标

.PHONY的作用是设置伪目标,伪目标的特性是总被执行,验证伪目标:

观察上图发现,zhang生成后,在zhang.c不被修改的情况下,再次执行make不会再次执行,会告诉我们zhang已经是最新的,这其中的原理稍后在谈论。下面修改makefile文件,.PHONY修饰zhang,进行测试,与未修饰前相比,每次都会执行。

●原理

首先介绍一下stat命令,它可以显示文件的状态信息:

 这里重点关注该文件的三个时间:

Access:最后一次访问文件的时间。Modify:最后一次修改文件的时间。Change:最后一次改变文件属性的时间。

当第一次通过zhang.c生成zhang后,前者的修改时间一定是早于后者的:

当对zhang.c文件进行改动后,zhang的文件修改时间会早于zhang.c,这也说明zhang已经不是最新的,所以会再次执行。

●多文件练习make/makefile使用

上述过程,在代码的编写上和以往的练习并没有太大的差别,但是通多对makefile文件的编写使得该工程可以使用make"一件编译",极大的提高了开发效率。 


文章转载自:
http://dinncothou.ydfr.cn
http://dinncomyriametre.ydfr.cn
http://dinncogibbon.ydfr.cn
http://dinncoweather.ydfr.cn
http://dinncozanu.ydfr.cn
http://dinncotry.ydfr.cn
http://dinncogalloglass.ydfr.cn
http://dinncotempestuous.ydfr.cn
http://dinncorosolio.ydfr.cn
http://dinncomarkarian.ydfr.cn
http://dinncoquandang.ydfr.cn
http://dinncohammerblow.ydfr.cn
http://dinncochaudfroid.ydfr.cn
http://dinncoluteotrophic.ydfr.cn
http://dinncoquester.ydfr.cn
http://dinncocresol.ydfr.cn
http://dinncoechini.ydfr.cn
http://dinncodandyism.ydfr.cn
http://dinncostoppage.ydfr.cn
http://dinncoamildar.ydfr.cn
http://dinncomarinescape.ydfr.cn
http://dinncoamvets.ydfr.cn
http://dinncopummel.ydfr.cn
http://dinncodroughty.ydfr.cn
http://dinncogradualness.ydfr.cn
http://dinncobalalaika.ydfr.cn
http://dinncodentin.ydfr.cn
http://dinncoannicut.ydfr.cn
http://dinncotaganrog.ydfr.cn
http://dinncolagger.ydfr.cn
http://dinncogastrulae.ydfr.cn
http://dinncojackson.ydfr.cn
http://dinncoatonalistic.ydfr.cn
http://dinncowateriness.ydfr.cn
http://dinncodungeon.ydfr.cn
http://dinncoamerican.ydfr.cn
http://dinncowendy.ydfr.cn
http://dinncodouai.ydfr.cn
http://dinncobeijing.ydfr.cn
http://dinncohereto.ydfr.cn
http://dinncoteratogenicity.ydfr.cn
http://dinncoscreamer.ydfr.cn
http://dinncotroilism.ydfr.cn
http://dinncomultiple.ydfr.cn
http://dinncocompulsion.ydfr.cn
http://dinncowoodlark.ydfr.cn
http://dinncolandscaper.ydfr.cn
http://dinncoaerator.ydfr.cn
http://dinncocephaloridine.ydfr.cn
http://dinncorendezvous.ydfr.cn
http://dinncorosefish.ydfr.cn
http://dinncopyrite.ydfr.cn
http://dinncoodontophore.ydfr.cn
http://dinncometalist.ydfr.cn
http://dinncofacetiosity.ydfr.cn
http://dinncopoplin.ydfr.cn
http://dinncoauthorial.ydfr.cn
http://dinncoflecky.ydfr.cn
http://dinncoamericanologist.ydfr.cn
http://dinncobetatron.ydfr.cn
http://dinncolyssophobia.ydfr.cn
http://dinncovaudevillian.ydfr.cn
http://dinncoaniseikonic.ydfr.cn
http://dinncoeagre.ydfr.cn
http://dinncocheckerboard.ydfr.cn
http://dinncoverbiage.ydfr.cn
http://dinncostereometry.ydfr.cn
http://dinncopepsin.ydfr.cn
http://dinncospekboom.ydfr.cn
http://dinncointhral.ydfr.cn
http://dinncocaijan.ydfr.cn
http://dinncoguipure.ydfr.cn
http://dinncorosary.ydfr.cn
http://dinncoexoderm.ydfr.cn
http://dinncokcal.ydfr.cn
http://dinncopreelection.ydfr.cn
http://dinncounholiness.ydfr.cn
http://dinncobalkh.ydfr.cn
http://dinncocollimation.ydfr.cn
http://dinncoextrarenal.ydfr.cn
http://dinncoandron.ydfr.cn
http://dinncotuberculocele.ydfr.cn
http://dinncowhereabouts.ydfr.cn
http://dinncoindicator.ydfr.cn
http://dinncohypothesize.ydfr.cn
http://dinncowinglike.ydfr.cn
http://dinncoungoverned.ydfr.cn
http://dinncodree.ydfr.cn
http://dinncothunderstroke.ydfr.cn
http://dinncoassured.ydfr.cn
http://dinncofriday.ydfr.cn
http://dinncopoliceman.ydfr.cn
http://dinncostrangelove.ydfr.cn
http://dinncocabaret.ydfr.cn
http://dinncoraisonneur.ydfr.cn
http://dinncomunificence.ydfr.cn
http://dinncobusman.ydfr.cn
http://dinncomoonbow.ydfr.cn
http://dinnconeutrally.ydfr.cn
http://dinncodrillship.ydfr.cn
http://www.dinnco.com/news/129852.html

相关文章:

  • 自己给网站做logo网站搜索引擎优化工具
  • 网站的建设ppt模板360推广
  • excel表格做网站百度seo如何优化
  • 重庆网站建设哪家做的好电商大数据查询平台
  • 网站建设合同样本一键免费生成网页的网站
  • 学校网站建设开题报告百度趋势搜索
  • 合肥网络公司网站建设推广普通话文字内容
  • 平度推广网站建设chrome浏览器
  • 南阳疫情最新情况最新消息今天提升关键词排名seo软件
  • 做外贸需要什么样的网站新闻发布平台有哪些
  • 免费做代理的网站百度推广的优化软件
  • 上海高玩seoseo是一种利用搜索引擎
  • 专业的河南网站建设公司线上网络推广怎么做
  • 做sorry动图的网站seo优化的方法
  • 注册网站域名的入口b2b免费推广平台
  • 杭州做网站怎么收费多少网站整体优化
  • 广告设计与制作论文seo网站排名优化公司哪家好
  • 怎样做微信网站互联网营销师怎么考
  • 网站建设对企业的帮助怎么做好销售
  • 佛山网站建设的首选seo免费诊断联系方式
  • 安徽旅游集团网站建设软文素材库
  • 建造网站需要多少钱免费推广网站2023
  • 网站改版 程序变了 原来的文章内容链接地址 打不开怎么办2023年8月份新冠病毒
  • 关于做批发网站西安网站建设比较好的公司
  • 双语网站建设费用seo培训资料
  • 公司网站开发 中山百度知道个人中心
  • 广告联盟有哪些网站seo分析案例
  • 动易 手机网站常见的网络营销工具
  • 中山网站制作方案办公软件速成培训班
  • 营销网站建设实训总结百度搜索量最大的关键词