簡體   English   中英

LD_LIBRARY_PATH:如何找到共享的object

[英]LD_LIBRARY_PATH : how to find a shared object

我有一個共享的 object ( libxyz.so )。 給定 LD_LIBRARY_PATH,如何找到這個共享 object 的確切位置? 如果我有一個依賴於這個庫的二進制文件,我會在上面使用 ldd。

這就是我問的原因:我有一個 cgi 腳本,它在使用 LD_LIBRARY_PATH 設置為 VALUE1 時有效。 當路徑設置為 VALUE2 時,它不起作用。 我想找到 VALUE1 中路徑指定的庫的確切位置(請注意,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中查找程序所使用的實際庫。

strace -f mycgiscript 2>&1 | grep libxyz.so

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM