gcc,g++

1.vim配置问题

我们刚开始的vim,没有自动缩进,自动补全等,这让我们写C语言代码很麻烦,vim配套的有一个vimrc文件,这个文件可以配置我们的vim使他具备了这些功能

我们可以在gitee上面配置好vim环境,这样我们写代码就会很方便

我们之前使用sudo的时候,我们需要在在配置文件里面添加,这个用户,当我们学习了vim之后这个可以自己做了

2.gcc g++

2.1gccVSg++

gcc:C语言编译器只能用来编C语言

g++:c++,c均可以编写

2.2程序翻译的过程

1.预处理

2.编译

3.汇编

4.链接

2.2.1预处理

预处理阶段分为四个

a头文件展开

b1去注释

c宏替换

d条件编译

我们要是直接运行一个写好的代码,linux默认是跳过程序翻译过程的那四个阶段,所以需要单独的命令

gcc -E code.c -o code,i

后面的那个i是俗称的字符后缀

-E的意思是:从现在开始程序翻译,做完对源文件的预处理,就停下来

这是咱们写好的代码

要是有语法错误,就会这样告诉我们

这是正确运行的结果,最后的code.i表示的是,把这些内容输出到这个文件里面

接下来我们打开它

接下来我们分析那四条

我们可以很清楚的看到头文件被打开了

注释也没有了

宏也被替换了

至于条件编译:,就相当于把代码做出了一个裁剪,

2.2.2编译

命令是

gcc -s code.c -o code.s

后缀是,s

这一步是将代码进行编译,形成汇编语言

此时我们已经看不懂了,但是计算机可以看懂

2.2.3.-c

转成二进制模式

可重定向为目标二进制文件、

gcc -c code.c -o code.o

这个后缀是.o

2.2.4.最后一步就是生成可执行文件

gcc code.c -o code.exe

我们一直说的-o是输出到指定文件里面

这就是运行后的结果

3.为什么要把C语言翻译为汇编语言

这涉及到了悠久的历史,此处不再过多赘述

4.该如何理解库

库分为动态库和静态库

动态库链接:使用过链接动态库地址来进行的

动态库;一旦动态库缺失,相关的所有程序,都无法运行

静态库链接:把库中我们需要的直接拷贝到你的代码当中

静态库:一旦成功链接,就不需要静态库

动态 静态

.so .a

动态链接 静态链接

节省内存 不用跳转,不依赖库

慢,编译完成后依旧需要库 体积较大

我们学习的gcc默认采用动态的连接方式

注意:编译程序动态更好

如图,这个文件会非常的大

相关推荐
l1t2 小时前
修复WSL CreateInstance/E_UNEXPECTED和 mounted read-only 错误
linux·windows·wsl
Ruiery2 小时前
Linux 6.6内核 CPU 深度解析(九):时钟与 TSC — 内核怎么从 PIT/HPET 切到 TSC
linux·运维·服务器
91刘仁德2 小时前
Linux网络编程从入门到实战:UDP/TCP协议与socket编程全解析
linux·网络·笔记·tcp/ip·udp
水饺编程3 小时前
第1章:下载 Linux 0.12 内核
linux·c语言·汇编·ubuntu
牢姐与蒯3 小时前
一点小碎片——每个线程独有的东西——上下文+栈
linux·运维·服务器
小此方3 小时前
Linux网络(二十):TCP拥塞控制与延迟应答详解:从拥塞窗口到TCP性能优化,理解TCP与UDP的效率差异
linux·网络·php
yunwei373 小时前
eBPF 开发实践:使用 eBPF 隐藏进程或文件信息
linux·后端·性能优化
芝麻开门2923 小时前
Linux文件系统
linux·文件系统
羔羊++3 小时前
24_实验二十三_运行内核
linux