2014-01-21 66 views
1

有一天,我遇到了一個Linux命令,讓我看到程序期待在哪裏找到它的庫。解決圖書館依賴問題對於不那麼流行或專有的軟件是非常有用的。我用ldd,這是非常豐富的,但錯過了我一個至關重要的一條信息:如何找出一個程序在哪裏尋找庫

ldd -v ./my_executable 了良好的信息爲my_executable可以鏈接到庫。 但是,對於那些無法鏈接/發現,ldd只給瞭如下信息:

<a_library_name.so.version> => not found

我要的是,而不是「未發現」,我想看看

not found at /path/to/<a_library_name.so.version>

回答

1

約庫路徑的信息被存儲在/etc/ld.so.conf

/usr/local/lib64 
/usr/local/lib 
include /etc/ld.so.conf.d/*.conf 
# /lib64, /lib, /usr/lib64 and /usr/lib gets added 
# automatically by ldconfig after parsing this file. 
# So, they do not need to be listed. 

更多信息參見man ldconfig

+0

我意識到這一點。但是,有些程序會從'/ path/to/installation/dir/libraries'中查找庫。更糟糕的是,此路徑可能是硬編碼的,並且與實際安裝路徑不同。 – biocyberman

+1

但是爲什麼'ldd'列出它正在查找的所有目錄呢?你可以從'/ etc/ld.so.conf'獲得這個信息,你也可以看看是否設置了'LD_LIBRARY_PATH'。請參閱[本文檔](http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html)。 – yegorich

4

在Linux上,你可以使用LD_DEBUG。這link是有幫助的。