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

静态库可以动态链接进程序!!

    来源: 互联网  发布时间:2016-03-27

    本文导语:  我发现一个奇怪的问题.使用ldd查看程序所需链接的动态库时,有一些系统的静态库也被链了进来,不知道是如何做到的. 例如:ldd /usr/bin/dbx /usr/bin/dbx needs:                     /usr/lib/libc.a(shr.o)           ...

我发现一个奇怪的问题.使用ldd查看程序所需链接的动态库时,有一些系统的静态库也被链了进来,不知道是如何做到的.
例如:ldd /usr/bin/dbx
/usr/bin/dbx needs:
                    /usr/lib/libc.a(shr.o)
                    /usr/lib/libdbx.a(shr.o)
                    /unix
                    /usr/lib/libcrypt.a(shr.o)
                    /usr/lib/libpthdebug.a(shr.o)

而/usr/lib/libc.a等都是使用ar打包的静态库.
用ar -tv /usr/lib/libc.a 可以看到里面的.o文件.
rw-r-----   300/300     1616 Nov 23 03:55 2005 frexp.o
rw-r-----   300/300      750 Jul 20 07:42 2005 itrunc.o
rw-r-----   300/300     1958 Nov 23 03:55 2005 ldexp.o
rw-r-----   300/300     1614 Nov 23 03:55 2005 modf.o
rw-r-----   300/300      925 Jul 20 06:04 2005 logb.o
rw-r-----   300/300     3230 Nov 23 03:49 2005 scalb.o
rw-r-----   300/300      463 Jul 20 06:04 2005 finite.o
rw-r-----   300/300      744 Jul 20 07:42 2005 uitrunc.o
rw-r-----   300/300      768 Jul 20 05:51 2005 _itrunc.o
rw-r-----   300/300      765 Jul 20 05:51 2005 _uitrunc.o

但是自己打包的.a静态库却不能动态链接入程序.
请高手帮忙解释一下.

|
你用的是AIX?
AIX下有shared library和shared object两个概念,包含shared object的archive就是shared library,也是用ar生成。你能看到生成的依赖关系里:
/usr/bin/dbx needs:
                    /usr/lib/libc.a(shr.o) 
libc.a就是一个shared library,而其中的shr.o就是shared object。dbx依赖于libc.a中的shr.o。

你自己打包是可以的,但其中的.o必须是按照shared object方式生成的,才能动态链接。

    
 
 

您可能感兴趣的文章:

  • 如何在一个静态链接库中链接另一个静态链接库?
  • linux中静态链接库调用了另一个静态链接库
  • 静态库,动态库,静态链接和动态链接
  • 编译静态链接库,其中使用了其它链接库,该如何写makefile
  • .a文件的动态链接和静态链接问题
  • 动态库链接 变为 静态库链接问题
  • linux下静态库使用:"未使用链接器输入文件,因为链接尚未完成"
  • 急求静态库引用静态库,该如何编译链接!!!
  • makefile.am中生成.a静态库的同时,链接其他.a静态库或.la动态库的问题
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • 可执行文件比静态链接库小正常吗?
  • QT4.0 OpenSource版本开发Windows程序,如何进行静态链接?
  • linux 编译的时候,如何与.a静态库做链接生成.elf文件?
  • 静态库链接
  • 编译时如何区分动态链接和静态链接?
  • AIX 4.3下面如何静态链接GNU stdc++库到我的程序里面?
  • 怎么样编释成静态链接库?
  • 请问编译静态链接库的makefile该如何写?
  • LINUX下的静态库编译链接问题
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • 一个类里的静态方法可以访问这个类里的变量吗?
  • 静态方式调用so,连接时,从哪取的符号? (windows上.dll可以有对应的导出库.lib)
  • linux下用纯C的调用静态库.a可以吗?我的怎么不行?急!
  • Linux中如何定义可以提供给可加载内核模块使用的静态库
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个基本概念问题:静态函数只能调用静态方法,类的成员函数也是静态的吗?
  • 如何 用一个静态库 生成 另一个静态库
  • 请教:(static)静态变量和静态方法是什么意思?
  • 有把两个静态库.a合成一个静态库的简单方法吗
  • linux 生成静态库的时候怎么连接别的静态库
  • 静态博客 静态blog
  • 静态库动态库同时存在时,如何指定使用静态库
  • C# 静态方法与非静态方法的区别分析
  • gcc的静态库.lib怎末在编译的时候连接。对了静态库是自己的???
  • PHP static局部静态变量和全局静态变量总结
  • c#静态方法和非静态方法详细介绍
  • 在静态上下文中不能引用非静态方法test(),天啊,为什么我的main()不能调用任何其它函数?
  • 静态函数,静态变量
  • java有无像vb那样的静态变量?java的staic是类的属性,那末,静态变量如何声明?
  • c++静态局部变量和静态函数示例
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • 关于C++静态成员函数访问非静态成员变量的问题
  • asp.net伪静态后真正的静态文件无法访问的解决方法
  • 请问在LINUX下怎么设置静态IP?我在虚拟机中不能设置静态IP怎么办?
  • 为什么非静态变量不能用在静态方法上?什么意思?


  • 站内导航:


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

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

    浙ICP备11055608号-3