Chinaunix首页 | 论坛 | 博客
  • 博客访问: 280797
  • 博文数量: 72
  • 博客积分: 2387
  • 博客等级: 大尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-26 10:54
文章分类

全部博文(72)

文章存档

2012年(1)

2011年(1)

2010年(70)

分类:

2010-08-26 13:01:48

1.Linux

1、运行时,动态库的装载依赖于ld-linux.so.6的实现,它查找共享库的顺序如下:
   (1)ld-linux.so.6在可执行的目标文件中被指定,可用readelf命令查看
   (2)ld-linux.so.6缺省在/usr/lib和lib中搜索;当glibc安装到/usr/local下时,它查找/usr/local/lib
   (3)LD_LIBRARY_PATH环境变量中所设定的路径
   (4)/etc/ld.so.conf(或/usr/local/etc/ld.so.conf)中所指定的路径,由ldconfig生成二进制的ld.so.cache中

2、编译时,搜索库的路径顺序如下:
   (1)ld-linux.so.6由gcc的spec文件中所设定
   (2)gcc --print-search-dirs所打印出的路径,主要是libgcc_s.so等库。可以通过GCC_EXEC_PREFIX来设定
   (3)LIBRARY_PATH环境变量中所设定的路径,或编译的命令行中指定的-L/usr/local/lib
   (2)binutils中的ld所设定的缺省搜索路径顺序,编译binutils时指定。(可以通过“ld --verbose | grep SEARCH”查看)

2.Hp-ux

1.运行时,/usr/lib/dld.sl (32-bit) 或 /usr/lib/pa20_64/dld.sl (64-bit )
   (1)搜索应用库默认路径/usr/local/lib and /usr/contrib/lib (32-bit mode) 或/user/local/lib/pa20_64 and /usr/contrib/lib/pa20_64 (64-bit mode) 和系统库默认路径/usr/lib (32-bit mode) or /user/lib/pa20_64 (64-bit mode)
   (2)搜索链接时动态库的目录.对在工作目录链接的动态库(32bit:搜索绝对路径,64bit搜索当前运行路径)
   (3)搜索链接时+b 选项参数传入路径(hp-ux 9.0以后版本)
   (4)链接时+s选项参数设置时,搜索SHLIB_PATH环境变量的路径,64-bit 还搜索LD_LIBRARY_PATH环境变量路(hp-ux 9.0以后版本)

2.编译时,搜索库的路径顺序如下:
   (1)   aCC   -L 选项参数 传入路径,或-p 参数指定搜索路径/usr/lib/libp
   (2)   先搜索环境变量 LPATH ,没有时搜索默认路径 32-bit libraries are located in /usr/lib and /usr/ccs/lib.   64-bit libraries are located in /usr/lib/pa20_64.  

3.AIX

1.运行时,load或exec
   (1) 搜索 L_LIBPATH_EXEC环境变量
   (2)搜索LibraryPath 参数(null string表示当前目录)指定路径,如果LibraryPath 参数未设置搜索LIBPATH,如果LIBPATH未设置搜索LD_LIBRARY_PATH
   (3)搜索程序(或加载的共享库)load section 的搜索路径。使用dump -H <程序名> 查看程序load section 搜索路径

2.编译时,搜索库的路径顺序如下:
   (1)搜索 -L标志 指定的路径
   (2)搜索命令行中-l 指定的库时不使用LIBPATH,和-blibpath选项参数指定的路径
   (3)程序load section 的搜索路径内容: -blibpath选项覆盖所有-L标记的内容,-L标志 和-blibpath选项都没有指定时,使用LIBPATH(没有LIBPATH环境变量时,使用缺省路径/usr/lib:./lib),只使用-L标志时为-L标志指定的路径和/usr/lib:./lib

4.Solaris  

1.运行时,
   (1)如果存在LD_LIBRARY_PATH(32-bit)或LD_LIBRARY_PATH_64(覆盖LD_LIBRARY_PATH),LD_LIBRARY_PATH(64-bit)环境变量,搜索对应路径
   (2) 如果编译时包含LD_RUN_PATH环境变量或设置-R   参数(-R 覆盖LD_RUN_PATH),搜索对应指定的路径
   (3)如果编译时未设置-z nodefaultlib 参数,搜索/usr/lib (32-bit)或/usr/lib/sparcv9 (64-bit SPARC)
   (4)ldd /usr/bin/cat或 dump -Lvp /usr/bin/cat 查看依赖的共享库

2.编译时,搜索库的路径顺序如下:
  (1)如果LD_LIBRARY_PATH环境变量存在,搜索(';'分隔)第一个路径列表(':'分隔)
   (2)搜索-L标志指定的路径
   (3)如果LD_LIBRARY_PATH环境变量存在,搜索(';'分隔)第二个路径列表(':'分隔)
   (4)如果-Y选项参数未设置,搜索默认路径/usr/ccs/lib 和 /usr/lib (32-bit), /usr/lib/sparcv9 (64-bit SPARC)
   (5)对于64-bit SPARC,LD_LIBRARY_PATH_64 覆盖 LD_LIBRARY_PATH

 
阅读(1506) | 评论(0) | 转发(0) |
0

上一篇: hungup信号

下一篇:LD_PRELOAD

给主人留下些什么吧!~~