web-dev-qa-db-ja.com

Cライブラリ関数のリストを表示する方法は?

私はLinuxプログラミングの初心者です。 Linuxでコマンドライン経由でシステムコールのリストを表示する方法は次のとおりです。

man syscalls

しかし、cライブラリ関数のリストを表示したいのですが、どうすればそれができますか? cライブラリ関数をリストするのに役立つコマンドはどれですか?また、システムコールとcライブラリ関数のマニュアルページはどこにありますか?ありがとうございました。

2
user205421

Dashに似た (Zeal) という便利なオフラインドキュメントブラウザがあります。

別のオプション:

whereis glibc

または

dpkg -L *libc*

テキストエディターでファイルを開きます。

ファイル内で文字列を再帰的に検索するには:grep -R "some string" /path/to/includes

考慮すべきいくつかのパス:

  • / usr/local/include
  • / usr/target/include
  • / usr/include

その他のオプションには次のものがあります。

3
jmunsch

どのコマンドがcライブラリ関数をリストするのに役立ちますか?

標準Cライブラリ(GNU libc)で定義されているすべての関数をリストする1つの方法を次に示します。

nm -D /lib/$(uname -m)-linux-gnu/libc-*.so | grep -vw U | grep -v "_" | cut -d " " -f3

システムコールも実際のシステムコールをラップする関数であるため、システムコールも含まれることに注意してください。

システムコールとcライブラリ関数のマニュアルページはどこにありますか?

システムコールのマニュアルページは次のとおりです。

/usr/share/man/man2

ライブラリ関数のマニュアルページは次のとおりです。

/usr/share/man/man3
2
jlliagre

Cという名前のref関数ヘッダーを表示するNiceパッケージがあります。詳細については、 man ref を参照してください。 Cライブラリ関数のリストを見つけることができる優れたデータベースがあります。

関数は、ファイル/usr/share/elvis/stubs/ansistub.cにリストされています。関数を直接調べて機能を確認することも、必要に応じてフィルタリングすることもできます。

端末で次の大きな行を使用して、完全なリストを一度に表示できます。

cat /usr/share/elvis/stubs/ansistub.c | grep "^int\|^char\|^void\|^double\|^ldiv_t\|^unsigned\|^type\|^struct\|^FILE\|^size_t\|^time_t\|^long\|^clock\|^mbstowcs\|^div_t" | awk 'NR > 12' | less

次のような出力が得られます

void abort(void)
int abs(int num)
double acos(double cosvalue)
char *asctime(const struct tm *currtime)
double asin(double sinvalue)
void assert(int expression)
int atexit(void(*func)(void))
long int atol(const char *string)

....

または、リストをファイルmyCfunction.listにコピーして、

cat /usr/share/elvis/stubs/ansistub.c | grep "^int\|^char\|^void\|^double\|^ldiv_t\|^unsigned\|^type\|^struct\|^FILE\|^size_t\|^time_t\|^long\|^clock\|^mbstowcs\|^div_t" | awk 'NR > 12' > myCfunction.list

それを使用するには、最初に以下のコマンドを使用してrefをインストールします。

Sudo apt-get install elvis-tools
0
souravc