Linux课程四课---Linux开发环境的使用(gcc/g++编译器的相关)

作者前言

🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂
​🎂 作者介绍: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你会, 🎂
简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜欢学习C语言、C++和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂🎂🎂🎂🎂🎂🎂
🎂个人主页::小小页面🎂
🎂gitee页面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一个爱分享的小博主 欢迎小可爱们前来借鉴🎂


快速认识一下

C语言推荐gcc
c++语言推荐g++
两者的差别不大主要
c++语言:
在这里插入图片描述
C语言
在这里插入图片描述

程序编译的过程

我们大概知道 C语言 ->汇编语言->二进制,
在这里插入图片描述
这个只是大概说明了先有语言再有编译器,由于各种原因,这些编译器可能就不是用这些语言来写的了

预处理

  1. 头文件展开
  2. 去注释
  3. 宏替换
  4. 条件编译
    我们知道在头文件进行写入条件编译主要就是防止头文件重复包含
    这个过程只是进行一系列操作,语言没有改变
gcc -E code.c -o code.i

编译
C语言翻译成汇编语言

gcc -S code.i -o code.s

汇编
汇编语言翻译成二进制

gcc -c code.s -o code.o

需要注意的是这个code.o文件不是可执行文件,不能执行
链接

gcc code.o -o code

执行code文件就可以了

./code

动静态标准库----链接

我们可以使用下面指令,可以查看code文件用到了哪些库

ldd code

在这里插入图片描述
Linux中的c标准库就是libc.so.6
不同的系统的库的后缀是不太一样的

在这里插入图片描述
在linux 系统下安装了C语言的头文件

ls /usr/include/

在这里插入图片描述
也安装了C标准库

ls /lib64/linc

在这里插入图片描述
如果平台要支持开发就要提前在系统中安装语言头文件库文件

简单的理解就是动静态库本身就是一个文件,头文件也是文件

在这里插入图片描述
这个图可以帮助我们理解动态库的使用,你是一名学生,你的作业就是执行代码,但是你需要上网才能完成作业,但是你不知道网吧地址,可是学长告诉你了,你就会去这个地方去上网,上完网后,你就会回来继续写作业,直到完成,
而静态库的就是我们链接的时候我们把需要用到的方法直接拷贝到可执行程序,不受静态库的影响,哪怕静态库出来问题也不影响可执行程序。
简单的理解就是允许我们拷贝的库就是静态库,允许我们链接的就是动态库

平时我们使用的函数也称为库函数

动态库

大致意思:在程序链接的时候只是作些标记(地址),然后在程序开始启动运行的时候,动态地加载所需库(模块)也是就通过地址找到对应的模块,
优点

  1. 节省资源(包括内存、网络…等资源),不会出现重复代码(只要没有重复,所有的花费都是必要的)

缺点:

  1. 对库的依赖性比较强,一旦库丢失,所有使用这个库的程序就会无法允许

例子:

gcc code.c -o code.out
ldd code.out
file code.out

在这里插入图片描述

静态库

大概:只用于链接生成可执行文件阶段。链接器会将程序中使用到函数的代码从库文件中拷贝到应用程序中,一旦链接完成生成可执行文件之后,在执行程序的时候就不需要静态库了

优点

  1. 不依赖库,同类型平台中都可以运行使用

缺点

  1. 可执行程序体积比较大,比较浪费资源

如果没有安装过静态库就会报错
在这里插入图片描述
ld就是链接器

我们需要先安装C语言静态库

sudo yum install glibc-static

c++的静态库就是

sudo yum install libstdc++-static

然后进行文件链接就可以了

gcc Newcode1.c -o newcode_static -static

可以看到我们使用ldd指令查看链接的库,可以发现,链接的是静态库
在这里插入图片描述
在这里插入图片描述
这个图也可以说明,同一个文件进行不同的链接,大小会改变,静态链接的可执行文件的大小更大

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老秦包你会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值