当前位置:  技术问答>linux和unix

动态链接库的疑问

    来源: 互联网  发布时间:2015-11-24

    本文导语:  我看了几篇文章,说.so的文件是动态链接库,可加载方式有两种一种是用一个.h的头文件直接加载另一种是用dlfcn.h,dlopen, dlsym, dlclose调用,这两者有什么区别呀,如果第一种方法那它和.a的静态链接库是不是就没什么区别...

我看了几篇文章,说.so的文件是动态链接库,可加载方式有两种一种是用一个.h的头文件直接加载另一种是用dlfcn.h,dlopen, dlsym, dlclose调用,这两者有什么区别呀,如果第一种方法那它和.a的静态链接库是不是就没什么区别了吧。好象是.a的静态链接库是在编译时就编译进了程序中,而动态链接库是在运行时才动态调用的吧。我有些不明白,如果是动态调用的话怎么还有两种调用方式呢。能不能请哪位大侠给解释一下。

|
动态库占用内存少,静态库占用内存多。
同一个静态库如果被调用10次,需要占用10个空间。
而用动态库只需要一次就可以!

|
一种是用一个.h的头文件直接加载
你编译的时候,把动态库的位置指定,-L/你的路径 -l你的库(libmath.so就写成-lmath)
另一种是用dlfcn.h,dlopen, dlsym, dlclose调用
在程序里面指定的去打开,类似打开文件,加载

|
用dlfcn.h,dlopen, dlsym, dlclose调用,是在运行过程中去加载动态库,就算是指定的动态库不存在,一样不会导致进程退出
.so是指共享对象,在刚开始运行程序时,就会去加载相应的.so,如果不存在程序就会退出,其它方面就如同楼上两位所说一样

|
dlopen等函数是库的动态加载的统一接口,使用这些函数时,甚至被调用的库不存在都没关系。比较方便。使用.h文件加载,要在源码中加入这个.h文件,还要在运行时把.so文件加载进来,有点费事。  但这种加载和.a文件的使用是有本质区别的:如果多个文件调用该.a文件,那就要在编译时加载多次,每次都要消耗资源;如果多个文件调用.so文件,大家共享即可,只需要消耗一次资源,这也就时.so文件被成为共享库的道理。

    
 
 

您可能感兴趣的文章:

  • 动态编译与静态编译驱动程式疑问?
  • linux下动态库的创建疑问
  • 动态分配数组的疑问。
  • 关于linux编译、使用动态库的几个疑问
  • 静态库,动态库,静态链接和动态链接
  • .a文件的动态链接和静态链接问题
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • 动态库链接 变为 静态库链接问题
  • gdb调试动态链接库
  • 请教关于动态链接库的问题
  • 动态链接库转换?
  • 编译时如何区分动态链接和静态链接?
  • linux下链接一个动态库后原有程序不能正常运行
  • 关于动态链接库,翻译一段文字
  • linux下动态链接库函数找不到
  • 问一个编译动态链接库的问题
  • so动态链接库的问题
  • linux能否使用*.DLL型动态链接库
  • 请教linux9。0中使用动态链接库的问题
  • 多线程中动态链接库的使用
  • Linux动态链接的疑惑
  • Linux下的关于动态链接库
  • 动态链接库路径如何设置?
  • 动态链接库调用问题.
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 可执行程序加载动态库 和 动态库加载动态库 的动态库初始化的问题
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 动态库调用动态库
  • linux能否成为动态域名解析客户端的动态域名解析服务器?
  • 关于动态菜单项,注意,不是动态菜单(一定给分)
  • Linux下,怎么确定动态库的绝对位置(动态库里面确定)?
  • 为什么动态生成的图片,JSP不能动态的获得
  • 请问:能不能动态的运行时生成对象(动态定义对象), 要涉及到哪些技术, 反射,序列化...??
  • 动态加载动态库问题--在线等
  • C#实现动态显示及动态移除图片方法
  • 在linux下(c++),如何动态调用 动态库(.so)? 为什么我编译报错:undefined reference to "dlopen"
  • 程序发布的问题(动态连接库的问题)
  • JSP动态缓存 JimStoneCache
  • 怎么调试unix动态库.
  • 如何调用动态
  • 关于动态库的问题,谢谢!
  • linux动态路由问题
  • 内核与动态(共享)库
  • Linux 动态库,静态库的一些疑惑
  • 动态库中的变量(全局和自动变量)在什么地方存储,内存在什么位置分配?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3