LD_LIBRARY_PATH:如何查找共享对象

时间:2010-04-07 00:21:30

标签: linux

我有一个共享对象(libxyz.so)。给定LD_LIBRARY_PATH,如何找到此共享对象的确切位置?如果我有一个依赖于这个lib的二进制文件,我会使用ldd。

这就是我问的原因: 我有一个cgi脚本,当使用LD_LIBRARY_PATH设置为VALUE1时,它可以工作。当路径设置为VALUE2时,它不起作用。我想找到VALUE1中路径指定的库的确切位置(请注意,VALUE1有近20个不同的位置)

平台:Linux

3 个答案:

答案 0 :(得分:10)

把它放在一个文件中:

#!/bin/bash
IFS=:

for p in ${LD_LIBRARY_PATH}; do
    if [ -e ${p}/libxyz.so ]; then
        echo ${p}
    fi
done

并运行它。

答案 1 :(得分:4)

您也可以使用ldd。要做到这一点,你会:

  1. 将LD_LIBRARY_PATH设置为工作时的值(即export LD_LIBRARY_PATH=VALUE1
  2. 运行ldd /path/to/prog | grep libxyz.so

答案 2 :(得分:0)

睡觉(30);在您的cgi中,从浏览器启动它,然后查看/ proc / $(pidof mycgi)/ maps以查找程序使用的实际库。