LD_LIBRARY_PATH:如何查找共享对象

Cur*_*awg 6 linux

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

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

平台:Linux

R S*_*hko 11

把它放在一个文件中:

#!/bin/bash
IFS=:

for p in ${LD_LIBRARY_PATH}; do
    if [ -e ${p}/libxyz.so ]; then
        echo ${p}
    fi
done
Run Code Online (Sandbox Code Playgroud)

并运行它.

  • @CuriousDawg - 你是否完全按照我写的例子尝试过这个例子?`IFS=:` 告诉 bash 将 : 视为分隔符(或 bash 用语中的字段分隔符)。 (2认同)

R S*_*hko 5

您也可以使用 ldd。为此,您将:

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