2011-07-12 16 views
7

Linuxでの共有ライブラリの依存関係をリストするプログラミング方法はありますか? lddの代わりに...Linuxで共有ライブラリの依存関係をリストするプログラミング方法

+0

システム( "ldd myfile"); –

+1

実際のものが到着する前の一般的な答えです。プログラムのソース(この場合は 'ldd')を確認して、何が行われているかを確認することができます。 –

答えて

0

LD_TRACE_LOADED_OBJECTS環境変数を空でない文字列に設定し、バイナリを実行します。 thisのmanページを見てください。

LD_TRACE_LOADED_OBJECTS 
    (ELF only) If set to non-empty string, causes the program to list its dynamic library dependencies, as if run by ldd(1), instead of running normally. 
+0

バイナリではなく共有ライブラリの依存関係をチェックしたいのですが?この場合、共有ライブラリを実行できません...ありがとうございます。 – flyingbin

+0

共有ライブラリでld.soを以下のように実行することができます:/lib/ld-2.11.2.so --list /lib/libc.so.6 – ks1322

4
readelf -Wa lib.so|grep NEEDED 
+4

readelf -d lib.soははるかに効率的です。 *すべての情報をデコードする必要はありません。また、これは 'ldd'が提供する依存関係の完全(推移的)リストを提供しません。直接のものだけ。 –

0

これは私がFedoraの上で自分自身を使用して、簡単なbashスクリプトで、それは、find-必要とrpmパッケージのに依存している、あなたは見つける-必要で、それは内部的に使用していますどのようなツールを見つけるために内部に見ることができます。

#!/bin/bash 
# 
# Use rpm to recursively list dependencies of all files in a directory 
# 
# Syntax: 
# lsdep path/to/directory 
# Example: 
# lsdep /usr/src/kernels/`uname -r`/ 

find $1 -type f -exec sh -c 'res=`echo '{}' | /usr/lib/rpm/find-requires`; [ -n "$res" ] && (echo;echo file '{}'; echo $res)' \; 
関連する問題