oracle ld library,浅析 Linux LD_LIBRARY_PATH

㈠ 历史背景

现如今、软件大多自带共享库、或者出于安全、或者基于商业考量

如:

ORACLE :$ORACLE_HOME/lib

MySQL :$HOME/mysql/lib

下面贴上oracle用户下.bash_profile里关于LD_LIBRARY_PATH设置

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/X11R6/lib

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/jdk/jre/lib/i386

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/jdk/jre/lib/i386/server

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/rdbms/lib

㈡ 几个概念

① 下面几个大意相近

共享库、动态链接库、.so文件

② ld.so 花名又叫:共享库加载器

㈢ 存在的意义

用来告诉 ld.so 到哪里可以找到某某人的共享库

㈣ 大概说说

.so文件的管理和加载由ld.so负责、他在标准路径/lib 或 /usr/lib 里查找APP所需的.so、

但对于非标路径:

Linux做法是把私有路径加入/etc/ld.so.conf、运行ldconfig生成ld.so.cache、ld.so会去查找这个cache

UNIX作风则是采用LD_LIBRARY_PATH来处理非标路径的.so文件

查找优先级如下(Linux):

① LD_LIBRARY_PATH 环境变量指定目录

② /etc/ld.so.conf指定目录

③ 标准路径 先/usr/lib 再 /lib

㈤ 常见错误

error while loading shared libraries:ooxx.so.0:cannot open shared object file:No such file or directory

这里的ooxx是如何命名的、有兴趣的朋友自行参考 点击打开链接

㈥ 通用的方案

① 将这些自带库cp到/usr/lib或/lib、然后ldconfig   有个案例:点击打开链接

② /etc/ld.so.conf 、然后ldconfig

③ LD_LIBRARY_PATH(这个变量有些遭人诟病)

2013-07-19 补充:

查看某程序所依赖的共享库的方法如下:

[root@cdio ~]# ldd /home/mysql/mysql/bin/mysqldump

libpthread.so.0 => /lib64/libpthread.so.0 (0x000000337d200000)

libz.so.1 => /usr/lib64/libz.so.1 (0x000000337e600000)

librt.so.1 => /lib64/librt.so.1 (0x000000337d600000)

libdl.so.2 => /lib64/libdl.so.2 (0x000000337c600000)

libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000031ebe00000)

libm.so.6 => /lib64/libm.so.6 (0x000000337da00000)

libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000031e9e00000)

libc.so.6 => /lib64/libc.so.6 (0x000000337c200000)

/lib64/ld-linux-x86-64.so.2 (0x000000337be00000)

输出可分三列解释:

第一列:程序所依赖的库

第二列:系统提供的与程序所需的库的对应库

第三列:库加载的开始地址

By WaterBin

2013-07-17

Good Luck

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值