56

C標準ライブラリのソースコードを探していました。つまり、たとえば、cos、abs、printf、scanf、fopen、およびその他すべての標準 C 関数がどのように記述されているか、つまり、それらのソース コードを確認するということです。

これを検索しているときにGLIBCに出くわしましたが、それが実際に何であるかはわかりません。それは GNU C Library で、いくつかのソース コードが含まれていますが、それらは実際には何なのか、標準関数のソース コードなのか、それとも別のものなのでしょうか。そして、それは何のために使われますか?

4

5 に答える 5

67

C 標準で記述されている標準 C ライブラリの実装に加えて、厳密には標準ではないが頻繁に使用されるいくつかの追加の便利なものです。

その主な内容は次のとおりです。

1) ANSI、c99、c11 規格で記述された C ライブラリ。マクロ、シンボル、関数の実装などが含まれます (printf()、malloc() など)。

2) POSIX 標準ライブラリ。システムコールの「ユーザーランド」接着剤。(open(),read() など。実際には glibc はシステム コールを「実装」しません。カーネルが実装します。しかし、glibc はカーネルが提供するサービスへのユーザー ランド インターフェイスを提供するため、ユーザー アプリケーションは通常のシステム コールと同じようにシステム コールを使用できます。関数。

3) また、いくつかの非標準だが便利なもの。

「力を使い、ソースを読んでください」

$git clone git://sourceware.org/git/glibc.git

(最近、glibc で malloc.c を調べたときにかなり啓発されました)

于 2012-07-12T21:38:31.557 に答える
13

標準にはいくつかの実装があります。glibc はほとんどの Linux が使用する実装ですが、他にもあります。Glibc には (Aftnix が述べているように) カーネルへのジャンプ (システム コールとも呼ばれる) のシーンを設定するグルー関数も含まれています。glibc の「関数」の多くは、実際の作業を行わず、カーネルに委譲するだけです。

Glibc のソースを読むには、ググってください。それを運ぶ無数のサイトと、いくつかのバリエーションがあります。

Windows は、MSVCR.DLL と呼ばれる Microsoft 独自の実装を使用しています。そのライブラリのソース コードがどこにでもあるとは思えません。また、Linux ハッカーが「標準」と考えるかもしれないいくつかの機能は、単に Windows には存在しないことに注意してください (特に fork)。逆もまた然り。

他のシステムには独自の libc があります。

于 2012-07-12T21:55:27.583 に答える
9

glibcパッケージには、システム上の複数のプログラムで使用される標準ライブラリが含まれています。ディスクスペースとメモリを節約し、アップグレードを容易にするために、共通のシステムコードが1つの場所に保持され、プログラム間で共有されます。この特定のパッケージには、標準Cライブラリと標準数学ライブラリという最も重要な共有ライブラリのセットが含まれています。これらの2つのライブラリがないと、Linuxシステムは機能しません。glibcパッケージには、各国語(ロケール)のサポートも含まれています。

于 2012-12-23T12:02:21.207 に答える