动静态库详解

本文详细介绍了Linux环境下动静态库的基本原理、特点、创建与使用方法。通过ldd命令查看程序依赖的库,了解到静态库(.a)在编译时将代码链接到可执行文件中,而动态库(.so)在运行时动态链接。动态库节省空间,但依赖库文件;静态库不依赖库文件,但可能导致内存浪费。文章还详细阐述了如何打包生成及封装动静态库,以及如何在代码中使用它们,特别强调了静态库的-I、-L、-l编译选项和动态库的LD_LIBRARY_PATH环境变量设置。
摘要由CSDN通过智能技术生成

认识动静态库

一. 动静态库的基本原理
首先我们先了解一下一个代码转换成程序需要的步骤都有哪些:

  1. 预处理: 将代码转换成test.i代码 ,还是c语言代码
  2. 编译: 将test.i转换成汇编语言代码,test.s
  3. 汇编: 将test.s转换成可重定向的二进制文件(目标文件),test.o
  4. 链接: 将这些二进制文件链接起来转换成真正意义上的可执行文件。

那么库是怎么形成的呢??
当我们将代码从test.c变为test.o的时候,我们将这些.o文件集合起来,所以可以库的本质就是一堆.o文件的集合,注意这里不包括main函数,但是包含大量的方法。

二. 认识动静态库

  1. ldd命令
    该命令可以查看一个可执行程序应用的库文件,如下图:
    在这里插入图片描述

  2. 库的命名
    在linux中以.so结尾的叫做动态库,以.a结尾的叫做静态库,而在windows中以.dll结尾的为动态库,以.lib结尾的为静态库。并且当我们查看库的名字的时候需要先去掉前缀lib和后缀.so或者.a,剩下的内容才是库的名字,比如上图中我们看到的libc.so这个库,我们现在看感觉很陌生,但是我们按照上面的方式去掉lib和后面的.so后发现就剩下一个c,那么这不就是我们的c语言库吗。

动静态库各自的特征

一. 静态库(.a后缀): 程序在编译链接的时候把库

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值