linux编辑器的使用(gcc,g++)
创始人
2024-05-19 10:56:30
0

前言

gcc/g++是一个编译器。

我们程序的翻译有四个步骤
1.预处理(头文件展开,条件编译,宏替换,去注释)
2.编译(c语言汇编语言)
3.汇编(汇编->可重定位目标二进制文件,不可以被执行的,bin.obj)----只是把我们自己的代码进行翻译形成二进制目标文件
4.链接(将我们这自己形成的.obj文件和库文件某种合并,形成可执行程序)

gccg++使用操作

我们怎么编译文件

我们在编译的时候,使用gcc +文件名,就会形成一个可执行程序->a.out在这里插入图片描述

如果我们想形成自己想要的名字的可执行程序,我们可以用-o选项,也就是gcc -o myfile myfile.cgcc myfile.c o myfile,两种都可以,主要是记住-o后面直接跟我们要的可执行程序的名字。
♥之后我们在使用中,一般使用这种操作来编译程序在这里插入图片描述

(1)预处理

预处理的作用
头文件展开,条件编译,宏替换,去注释.

我们先看一下我们的代码,然后进行预处理后,然后进行对比
下面是我们的代码.
在这里插入图片描述

怎么看到预处理的操作
gcc -E这个选项表示,从现在开始进行程序的翻译,预处理做完,就停下来。但是我们直接打印在屏幕上就太麻烦了,我们将它形成一个文件,就在使用-o选项,所以最后的操作就是gcc -E myfile.c -o myfile.i,就可以形成一个myfile.i的文件,因为一般进行完预处理之后的文件就是用.i进行后缀。在这里插入图片描述

<1>头文件的展开

我们发现这个代码多出来800多行的代码,这个东西就是我们的头文件展开的内容,然后将内容复制到预处理的文件中。
所以这一步叫做头文件的展开
在这里插入图片描述

<2>去注释

我们发现注释没有了,这一步的操作就是去注释。在这里插入图片描述

<3>条件编译

我们上面定义过PRINT,所以我们发现下面的就是剩下了hello PRINT,没有None,所以这一步就是条件编译在这里插入图片描述

<4>宏定义

因为上面定义M是100,所以我们在进行预处理操作的时候,直接将M换成100,这个操作就是宏定义
在这里插入图片描述

(2)编译

编译的作用
c语言汇编语言
操作
-S:从现在开始进行程序的翻译,当编译做完,就停下来。
gcc -S myfile.i -o myfile.s,默认形成myfile.s的文件。
在这里插入图片描述

(3)汇编

汇编的作用
汇编->可重定位目标二进制文件,不可以被执行的,bin.obj)----只是把我们自己的代码进行翻译形成二进制目标文件

只是把我们自己的代码进行翻译形成二进制文件目标,就是形成.obj文件
操作:gcc -c myfile.s -o myfile.o,默认形成.o文件。

打开文件,就是一堆乱码。
-c,从现在开始进行程序的翻译,当汇编做完,就停下来。在这里插入图片描述

(4)链接

链接的作用
将我们这自己形成的.obj文件和库文件某种合并,形成可执行程序

可以直接进行链接,看下面操作
gcc myfile.o -o myfile,就形成了可执行程序myfile

快速记忆

我们的选项合起来就是ESc,就是前三个操作的选项,我们只需要记住,前两个字母是大写就可以了。

我们三个操作形成的文件后缀是 ,.iso。一些镜像文件就是iso,我们不是ios,记住千万不要记混。

谈谈链接

新命令
ldd+可执行程序,检测这个可执行程序在当前被形成的时候,都依赖那些库
在这里插入图片描述
我们为什们能够在我们linux下,进行c的编写呢?
linux系统默认携带了语言级别的头文件语言对应的库

动静态库

库分两种-----库本质就是文件
1.静态库:libXXXXX.a(专门让编译器,对用户的程序进行静态链接的)
2.动态库:lib.XXXX.so(专门让编译器,对用户的册程序进行动态链接的)
文件的名字怎么看呢?
前缀lib XXXX后缀.a我们去掉前缀,去掉后缀,剩下的就是我们的名字。
静态库和静态链接
链接的时候,如果是静态链接,找到静态库,拷贝静态库中的我们所需要的代码到我自己的可执行程序中。
静态链接成功:我们的程序,不依赖任何库,自己就可以独自运行
静态库的缺点
因为自身拷贝的问题,比较浪费空间
动态库和动态链接
链接的时候,如果是动态链接,找到动态库,拷贝动态库中的我们所需要的代码的地址到我自己的可执行程序中。
动态链接成功:我们的程序,还是依赖库,一但动态库缺失,我们的程序就无法运行。
静态库的优点
因为可以做到可以被大家共享,所以真正的实现永远都是在库中,程序内部只有地址,比较节省空间。
静态库 VS 动态库
linux默认使用的是动态库和动态链接。

做做实验

动态链接
在这里插入图片描述

静态链接,我们先用这个命令创建静态链接gcc myfile.c -o myfile-static -static 在这里插入图片描述

我们发现他的体积相差40倍作用,我们就将动静态库的内容讲解的差不多了。

linux自动化构建工具(make/Makefile)

make:是一个命令
makefile:是一个文件,这个文件在当前的源代码路径下。

怎么自动化编译代码
1.快速写一个demo
2.规则

(1)快速写一个demo<见见猪跑>

先创建一个Makefile文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)细节

makefile是一个围绕依赖关系和依赖方法构建的一个自动化编译关系
完成一件事情,必须要有正确的依赖关系和依赖方法

我们上面makefile的内容如下图
在这里插入图片描述

依赖关系
myfile:myfile.c这个就是依赖关系,根据myfile.c依赖文件 ,形成myfile目标文件。形成myfile依赖于myfile.c
依赖方法
`gcc -o myfile myfile.c,根据这个依赖方法,形成目标文件。
注意
1.目标文件对应的依赖文件列表可以是空
2.makefile 在进行从上到下的扫描的,只会进行最开始的目标文件。第二个或者之后的并不会直接实现的
.PHONY作用
总是被执行的。
被它修饰的东西就叫做伪目标
所以我们可以发现,在上面这个makefile,我们的clean被他修饰,所以我们的clean可以一直执行,但是在我们形成目标文件,没有被他修饰,在执行完一次后,目标文件是最新的,我们就不能在进行执行了。如果进行修改,就还可以在执行。
我们知道了上面的知识,我提一个问题,系统怎么知道我们形成目标文件是最新的?
就是看时间,系统会比较源代码的时间和可执行程序的时间。
如果正常的话,我们的可执行程序的时间是比源代码的时间快,所以我们就不能执行了。
但是如果我们修改了,我们就又可以执行了
在这里插入图片描述

总结

我们本文将linux的编辑器,进行了详细,以及原理的介绍,还讲了动静态库的东西,还有自动化构建工具,希望下来大家自己多多运用,才能掌握,大家一起加油!!!

相关内容

热门资讯

晋祠导游词 晋祠导游词  作为一名专门为游客提供帮助的导游,通常需要准备好一份导游词,导游词具有极强的实用性,涉...
昆明大观楼导游词 昆明大观楼导游词  作为一名专门为游客提供帮助的导游,常常要写一份好的导游词,导游词是导游员在游览时...
许昌西湖公园的导游词 许昌西湖公园的导游词  今天,我带领大家来游览位于许昌市中心的西湖公园,希望我们能一起渡过一段快乐的...
刘公岛导游词 刘公岛导游词范文(精选5篇)  作为一名乐于助人的导游,总归要编写导游词,导游词是导游员同游客交流思...
九龙洞风景区导游词贵州导游词 九龙洞风景区导游词贵州导游词  作为一名默默奉献的导游,时常需要编写导游词,导游词一般是根据实际的游...
云南澜沧江导游词 云南澜沧江导游词  澜沧江是湄公河上游在中国境内河段的名称,藏语拉楚,意思为“獐子河”。它也是中国西...
新疆概况旅游导游词 新疆概况旅游导游词范文(精选3篇)  作为一名尽职尽责的导游,有必要进行细致的导游词准备工作,借助导...
颐和园的导游词资料 关于颐和园的导游词资料  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客...
北京导游词 北京导游词(合集15篇)  作为一名优秀的旅游从业人员,时常要开展导游词准备工作,一篇完整的导游词,...
泰山景点介绍导游词 泰山景点介绍导游词(通用5篇)  作为一位不辞辛劳的导游,通常需要准备好一份导游词,导游词可以加深游...
校园导游词 校园导游词  作为一名专门引导游客、助人为乐的导游,就难以避免地要准备导游词,导游词一般是根据实际的...
韩国景点导游词 韩国景点导游词  大家好!  首先,欢迎大家到韩国首尔来旅游,下面就由我给大家介绍一下这个具有东方神...
介绍洛阳的导游词 介绍洛阳的导游词  洛阳位于河南,在那里有许多的特色文化,那么关于介绍洛阳的导游词都有哪些呢?下面是...
桂林聚龙潭导游词 桂林聚龙潭导游词  作为一位无私奉献的导游,时常需要用到导游词,导游词不是以一代百、千篇一律的,它必...
炳灵寺石窟导游词 炳灵寺石窟导游词  作为一名尽职尽责的导游,常常要根据讲解需要编写导游词,导游词是导游人员引导游客观...
西安大雁塔导游词 西安大雁塔导游词500字  游客朋友们:  大家好!  欢迎大家到西安大雁塔观光旅游!  大雁塔位于...
马鞍山森林公园讲解词 马鞍山森林公园讲解词  森林公园的导游词篇一:马鞍山森林公园导游词  大家好!欢迎来到马鞍山森林公园...
武汉导游词 武汉导游词范文(精选8篇)  作为一无名无私奉献的导游,时常需要用到导游词,导游词是导游员进行实地口...
大慈岩导游词 大慈岩导游词五篇  篇一:大慈岩导游词  大慈岩概况 在前面大家可以往右看一下。我们会看到在山腰上有...
五爷庙和杨五郎的关系导游词 五爷庙和杨五郎的关系导游词  一提起五台山,就知道它是五台山香火最旺,许愿最灵的寺庙。万佛阁是五爷庙...