查看: 2617|回复: 0

Linux的动态库和静态库

[复制链接]
发表于 2017-5-19 14:15:48 | 显示全部楼层 |阅读模式

动态库:libXXXX.so    shared object
静态库:linXXXX.a    archive

静态库在链接为可执行文件时就将静态库包含到可执行文件中了,所以可执行文件大,但不依赖所调用的静态库文件了,但是如果静态库文件变动了就要重新链接。
在linux中静态库由ar命令生成,在windows或dos中,由lib命令生成。
在linux系统中可用的库都存放在/usr/lib和/lib目录中。库文件名由前缀lib和库名以及后缀组成。根据库的类型不同,后缀名也不一样。
共享库的后缀名由.so和版本号组成,静态库的后缀名为.a。
静态库的名字一般为libxxxx.a,其中xxxx是该lib的名称
动态库的名字一般为libxxxx.so.major.minor,xxxx是该lib的名称,major是主版本号,minor是副版本号

动态库在链接为可执行文件时在可执行文件中只是包含了所调用库的名字和函数等的信息,需要在运行时有操作系统帮助实现具体的解析和调用,当然这是隐含式的调用动态库中的函数,也可以显式调用,就像windows中的loadlibrary和getprocessaddress以及linux中的dlopen和dlsym。
在linux中动态库由gcc编译器生成,在windows中由编译器生成。

技术交流可以加黄工QQ2685896890
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表