【Linux】gcc/g++的使用,动静态库的理解

前面我们讲解了一下vim的使用,它方便了我们进行文本的删改。接下来,我们就要理解一下gcc/g++,并且对动静态库有一个基础的理解。

一.gcc/g++的使用

首先我们要明白gcc/g++是干什么的,其实这两个都是编译源代码的工具,他会识别文件后辍来编译源代码,形成可执行文件。gcc是编译.c文件的,g++是编译.cpp文件的。

我们在学习c语言的时候学习了编译的四个过程,这里我们在重新回顾一下。

首先是预处理,它分为四步,分别是头文件展开、去注释、条件翻译(可以实现对代码的动态裁剪)、宏替换。在linux指令是这样的:

gcc -E code.c -o code.i

code.c是源码,code.i就是我们预处理得到的.i文件。

其次是编译,它是将已经与处理过的.i代码编译成汇编代码,指令如下:

gcc -S code.i -o code.s

其中code.s就是我们的汇编代码。

然后是汇编,它是将汇编代码转成2进制文件的。指令如下:

gcc -c code.c -o code.o

其中code.o就是我们的二进制文件。

最后一步是链接,它是最后一步,是形成可执行文件的。

其实,.o文件+系统库=可执行程序。即代码+头文件+库=可执行。

当然我们也可以直接用gcc code.c得到a.out,这个文件打不开,但它就是可执行文件。

二.动静态库的理解

在我们的系统中,无论是我们的windous还是linux下,都有很多动静态库。那么什么是动静态库呢。

动态库:是c/c++或其他第三方提供的方法集合,被所有程序链接的方式关联起来。我们要明白,库中的所有函数,都有入口地址。所谓动态链接,就是把库函数的函数地址拷贝到可执行程序的特定位置。后缀为.so。

静态库:是c/c++或其他第三方提供的方法集合,被所有程序拷贝的方式,拷贝到可执行文件,这就是静态链接。后缀为.a。

那么动静态库的优缺点是什么呢?我们来看:

动态库:优点:可执行程序的体积小(只需传指针);缺点:具有强依赖性。(需要地址)

静态库:有点:可以无视库,能独立运行;缺点:体积大。

其实动静态库各具优势,不过在我们的计算机生涯种,我们更多的还是用的是动态库,毕竟在每个操作系统中,初始化的时候都有动态库,也不存在依赖不上的时候。

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值