1. ホーム
  2. c

[解決済み] GLIBCとは何ですか?何に使うのですか?

2022-03-11 04:13:40

質問

C言語の標準ライブラリのソースコードを検索していました。どういうことかというと、例えばcos, abs, printf, scanf, fopenなどのCの標準的な関数はどのように書かれているのか、そのソースコードを見たいということです。

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

解決方法は?

その実装は C言語標準ライブラリ C標準に記載されているものに加え、厳密には標準ではないがよく使われる便利なものをいくつか追加しています。

主な内容は以下の通りです。

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

2) POSIX標準ライブラリ。システムコールの糊代となるユーザーランド。(open()、read()など。実は、glibc はシステムコールを実装しているわけではありません。しかし、glibc はカーネルが提供するサービスに対するユーザーランドのインターフェースを提供するので、ユーザーアプリケーションはシステムコールを普通の関数と同じように使用することができます。

3) また、非標準的だが便利なものもある。

forceを使い、ソースを読め。

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

(最近、glibcのmalloc.cを見て、かなり悟りました)