浅析静态库和动态库的区别及linux下二者的生成和使用

从编程的角度来讲,库文件通常被分为静态库文件和动态库文件,其目的在于将部分代码封装在一起编译后供自己或他人调用,好处在于编译后的库文件看不到源代码,可保密,同时不会因为不小心修改了函数而出问题,便于维护。但是二者之间存在一定的差异。
    1.静态库:
    静态库在Windows操作系统中是.lib文件,在Linux下是.a文件,相当于中间(.o)文件的集合,是在程序链接时使用,讲静态库中的文件直接合成到最后的可执行文件中去,程序运行时,则不再需要静态库的支持。在linux下静态库的生成及使用方法如下:
    (1)将所有的源文件编译生成中间文件命令如下:
     gcc -c *.c
    (2)生成libxxx.a文件(这里的lib是必须有的,与后面的自定义的一起构成库文件名称)命令如下:
     ar crv libxxx.a *.o
    (3)静态库的使用
     gcc -o main main.c -L路径 -l库名(这里的main.c是自己的代码名称)
    2.动态库(共享库)
    动态库在Windows操作系统中是.dll文件,在Linux操作系统下是.so文件,动态库的使用是在使用动态库的程序运行起来后,动态地将动态库加载到内存上去执行,可以总结为不可执行的可执行文件。在Linux下动态库的生成及使用方法如下:
    (1)生成libxxx.so文件(这里的lib是必须有的,与后面的自定义的一起构成库文件名称)命令如下:
     gcc -shared -fPIC -o libxx.so *.c
    (2)动态库的使用
     gcc -o main main.c -L路径 -l库名(这里的main.c是自己的代码名称)
    (3)使用动态库的程序在运行时,需要单独搜索并加载动态库文件,做法如下:
     a.将动态库拷贝到/lib或者/usr/lib任意一个路径下
     b.设置环境变量
     c.修改配置文件
     区分静态库和动态库除了以上说的几点外,还有一点可以很快区分。静态库删除后程序无法使用,而动态库删除之后程序照样可以正常运行。  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值