動的にリンクされた共有ライブラリを拡張することに加えて? クローズド ソースの共有ライブラリのすべてのパブリック メソッドのリストを取得する方法を知りたいです。
私が試してみました
nm -D libfoo.so
readelf -s libfoo.so
しかし、戻り値の型、引数などの情報がありません。
この分野の初心者として、これらのメソッドのどれが自分のアプリケーションで呼び出せるかさえわかりません。
もっと便利なツールはありますか?
編集:
非常に単純な例として、次のものがあります。
libtest1.c:
int puts(char const *);
void libtest1()
{
puts("libtest1: called puts()");
}
次に、libtest1.c を libtest1.so にコンパイルしました。
gcc -fPIC -shared -o libtest1.so libtest1.c
私の「プログラム」(test.c)では、共有ライブラリを次のように使用します。
void libtest1(); //from libtest1.so
int main()
{
libtest1();
}
test.c をコンパイルしてテストします。
gcc -o test test.c -ltest1 -ldl
含める libtest1.h はありませんが、これは機能します。呼び出す libtest1() メソッドがある可能性があることを知っているため、「ちょうど」機能します。
libtest1.c をなくして、libtest1.so を手にしただけで、メソッドに何があり、どのパラメーターが必要かを覚えていないことを考えてみてください。
それはばかげた例です、私は知っています:)
または、他の例として(おそらくより良い):
システムのどこかに「libstone2goldconverter.so」を見つけたと仮定して、「なんてこった、私はそれを使うだろう」..しかしどうやって?