web-dev-qa-db-ja.com

Ubuntuの共有ライブラリでエクスポートされた関数を一覧表示する方法

Ubuntuで共有ライブラリをビルドしたばかりで、関数を使用しようとすると、ライブラリをロードするアプリケーションが「xxx」記号が見つからないことを報告しています。

この問題をさらに調査できるように、ライブラリによってエクスポートされた関数を確認(つまり、一覧表示)したいと思います。

関連する詳細:

OS:Ubuntu 9.10コンパイラ:gcc 4.4.1リンカー:GNU ld 2.20

34

Nmユーティリティを試してください。

GNU nmは、オブジェクトファイルobjfile ....からのシンボルをリストします。オブジェクトファイルが引数としてリストされていない場合、nmはファイルa.outを想定します。 [参照]

27
rpg
nm -D -C -g <library>

うまくいきます。

22
Mark

共有ライブラリは、ライブラリロードパスまたはアプリケーションのランタイム検索パスにありますか?ダイナミックリンカーがライブラリを見つけられないようです。アプリケーションで ldd を実行して、実行時にライブラリが見つかるかどうかを確認してくださいeg

$ ldd /usr/bin/less
    linux-gate.so.1 =>  (0x0072a000)
    libncurses.so.5 => /lib/libncurses.so.5 (0x00c68000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x007c7000)
    libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00286000)
    /lib/ld-linux.so.2 (0x002a1000)

ライブラリ検索パスの詳細については、 ld.so(8) のマニュアルページを参照してください。

2
Void