LD_LIBRARY_PATH:如何find共享对象

我有一个共享对象(libxyz.so)。 鉴于LD_LIBRARY_PATH,如何才能find这个共享对象的确切位置? 如果我有一个依赖于这个lib的二进制文件,我会用这个ldd。

这就是为什么我问:我有一个cgi脚本,当使用LD_LIBRARY_PATH设置说VALUE1时工作。 当path设置为VALUE2时,它不起作用。 我想查找VALUE1中path指定的库的确切位置(请注意,VALUE1具有几乎20多个不同的位置)

平台:Linux

把它放在一个文件中:

#!/bin/bash IFS=: for p in ${LD_LIBRARY_PATH}; do if [ -e ${p}/libxyz.so ]; then echo ${p} fi done 

并运行它。

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

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

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