静态库和共享库(动态库)的实现

库文件:特定功能的实现,为用户提供一些调用接口
一,二者在不同系统上的后缀名
1,静态库:Windows: .lib Linxu: .a
2,动态库:Windows: .dll Linux: .so
二,静态库的实现:
1,功能代码编译成中间文件
实现的命令为:gcc -c *.c
2,命令 ar
实现的命令为:ar crv lib(库文件名).a *.o
3,使用
实现的命令为:gcc -o main main.c -L库的存储路径 -l库文件的名称
三,共享库的实现:
1,生成共享库
gcc -shared -fPIC -o lib(库文件名).so 源文件列表
2,使用
gcc -o main main.c -L库的存储路径 -l库文件的名称
3,通过LD_LIBRARY_PATH环境变量给操作系统指定加载共享库的路径
(1),直接在终端上修改
export LD_LIBRARY_PATH=库的路径
仅对当前终端有效,当终端关闭或者系统 重启,则设置的环境变量就不存在了
(2),修改配置文件 /etc/bashrc
export LD_LIBRARY_PATH=库的路径
(3),将生成的共享库存储到系统默认的搜索路径下 /lib /usr/lib
四,二者的区别
1,静态库类似与中间文件的集合,是不可执行的,共享库是一个不可执行的可执行文件。
2,静态库是在连接时,将静态库中的内容合并到最终的可执行文件中,所以程序执行时不需要依赖静态库。动态库是在程序运行时,由操作系统动态加载库文件到内存上去执行,最终生成的程序中根本没有库文件的内容
3,更新库中的功。如果是静态库。必须重新编译可执行文件
如果是共享库。只需要更新共享库就可以。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值