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默认采用动态的连接方式

注意:编译程序动态更好

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

相关推荐
Lsetea2 小时前
curl指定--tlsv1.2仍连接TLS1.3:最低版本与tls-max排查
linux·https·ssl证书·curl·tls
Lsetea2 小时前
curl访问HTTPS报47 Too many redirects:重定向循环与max-redirs排查
linux·http·https·ssl证书·curl
9624563 小时前
一次 Dell PowerEdge R750xs 启动故障复盘:从 iDRAC 带外管理到 Linux 多内核回退与 initramfs 重建
linux·运维·服务器
Zevalin爱灰灰4 小时前
Linux入门第一部分(Ubuntu入门篇) 第二章 浅尝Ubuntu(二)
linux·嵌入式·1024程序员节
北京中科新远科技4 小时前
高速接口兼容排查实战:OSFP、QSFP112与QSFP56如何逐层验证
linux·运维·网络
Ruiery5 小时前
Linux 6.6内核 CPU 深度解析(零):x86 内核引导协议 — 从 bootloader 到 main()
linux·运维·服务器
Ruiery5 小时前
Linux 6.6内核 CPU 深度解析(十六):x86 保护机制 — 从 ring 到页表的权限防线
linux·运维·服务器
qetfw5 小时前
Linux 文件清理:find、mtime 与安全传参验证
linux·shell·1024程序员节
可乐_不渴5 小时前
【Linux】 项目自动化构建工具makefile&& 版本管理Git&&第一个程序
linux·git·自动化·1024程序员节
西安同步电子6 小时前
时统卡驱动踩坑:Windows 和 Linux 下时间同步的底层差异
linux·stm32·单片机