库文件

目录

库文件

静态库

动态库(共享库)

静态库和共享库的区别


库文件

库文件是预先编译好的方法的集合。

比如:我们提前写好一些数据公式的实现,将其打包成库文件,以后使用只需要库文件就可以,而不需要重新编写。库文件分为:静态库和动态库(也叫共享库)两种。

windows 系统静态库扩展名为:.lib    动态库扩展名为:.DLL;

Linux 系统静态库扩展名为:.a           动态库扩展名为: .so

静态库

1、特点:

程序在链接的过程当中,链接器从库文件中取得所需代码,复制到生成的可执行文件当中。因此,静态库是在程序的链接阶段被复制到程序当中,和程序的执行过程没有关系。

2、静态库的生成
 
     eg:有两个源文件:main.c max.c
     1) gcc –c main.c max.c (得到 main.o 和 max.o)
     2) 使用 ar 将目标文件归档
        ar crv libxxx.a main.o max.o
        **libxxx.a 即为我们创建的静态库。

动态库(共享库)

1、特点:
动态库在链接阶段并没有被加载到程序当中,而程序在运行时被系统动态加载到内存当中供程序使用。

2、共享库的生成

  1)将所有的.c文件编译成.o目标文件

          gcc –c max.c

          gcc –c add.c

  2)对生成的.o文件处理生成共享库,假设共享库的名字为libfoo.so

       gcc –fPIC –shared –o libxx.so add.c

静态库和共享库的区别

1、静态库是在程序编译时链接的;动态库是在程序运行时链接的

2、静态库的可执行文件当中包含了库代码的一份完整的拷贝,因此,当它被多次使用时就会有多份没用的拷贝在内存当中,所以比较占内存;而动态库系统只需载入一次动态库,不同的程序可以得到内存当中相同的动态库的副本,因此会节省很多内存。

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值