动静态库详解

动静态库

LinuxWindows
动态库.so.dll
静态库.a.lib
动静态库的本质就是文件。

lld
ldd命令可以查看一个可执行程序所依赖的库文件

  • ldd code:查看code依赖的库文件

平台要支持开发,必须要提前在系统中安装,语言的标准头文件+库文件。

C语言标准库

C语言静态库

动态库

动态库是被所有人共享使用的,一旦缺失,依赖这个动态库的所有程序都不可以运行。
  • 动态库,在编译链接时不需要把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库。这样可以节省系统的开销。
  • 动态库,一般后缀名为.so
  • gcc在编译时默认使用动态库。

动态库优点

  • 节省资源,不会出现太多的重复资源。资源包括磁盘、内存、网络等资源

动态库缺点

  • 对库的依赖性较强,如果库丢失,则所有使用这个库的程序都无法运行。
  • 相较于静态库会有略微的性能问题,调用动态库会存在跳转调用的问题。

静态库

  • 静态库是指在编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时就不再需要库文件。
  • 静态库,一般后缀名为.a

静态库安装
默认是不安装静态库,只默认安装动态库

  • yum install -y glibc-static libstdc++-static
    centos7使用yum安装C/C++静态库的方式
    出现下面这种情况,代表安装成功:

静态库优点:

  • 不依赖库,可执行程序在同类型的平台中都可以直接运行

静态库缺点

  • 可执行程序体积比较大,比较浪费资源。资源包括:磁盘、内存、网络等资源。

动静态库的区别:静态库在链接时需要拷贝到源文件中,动态库不需要。
允许你拷贝的库就是静态库,允许你关联的库就是动态库。

动静态链接

动态链接必须存在动态库,静态链接必须存在静态库。

  • gcc默认是使用动态链接的。

动态链接

  • gcc -o mybin test.c
    使用test.c形成mybin可执行文件的时候,默认使用动态链接

静态链接

  • gcc -o mybin-static test.c -static
    使用test.c形成mybin-static可执行文件的时候,使用静态链接

查看可执行程序的动静态库详情

  • file a.out使用file命令查看可执行程序a.out的动静态库详情
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

排骨炖粉条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值