![「Cライブラリまたは標準Cヘッダファイルにアクセスできません」とはどういう意味ですか? [閉鎖]](https://linux33.com/image/186366/%E3%80%8CC%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%BE%E3%81%9F%E3%81%AF%E6%A8%99%E6%BA%96C%E3%83%98%E3%83%83%E3%83%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%8D%E3%81%A8%E3%81%AF%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
私は最近という本を読んでいました。Linuxカーネルの開発、作成者ロバート・ラブ。彼は2章でこう指摘する。
カーネルはCライブラリまたは標準Cヘッダファイルにアクセスできません。
初心者として、標準ファイルやCライブラリにアクセスせずにすべてのカーネルを作成する方法を尋ねたいと思います。オペレーティングシステムを開発するとき、これは一般的な動作ですか?教えてください
答え1
Cライブラリの多くの機能はカーネルに依存しています。カーネルがCライブラリを使用しようとすると、ループが発生します。標準のCヘッダーファイルはCライブラリから提供されるため、使用できません。唯一の図書館できるカーネルで使用されるライブラリには、Cライブラリを含む独自の外部依存関係はありません(つまり、メモリ割り当てやI / Oはありません...を意味します)。
通常、カーネルは必要なすべてのコードを書くことによって開発されます(場合によっては、適切なライセンスが付与されたライブラリからコードをコピーすることもできます)。どのようなものかを知りたい場合は、以前のバージョンのLinuxカーネルのソースコードを引き続き使用できます。バージョン 0.01例えば。
それ以来、状況は少し変わり、Linuxカーネルは自分だけの「図書館」(再利用用に設計されたカーネルコードモジュール)およびCライブラリスタイルルーチンのさまざまな実装(例:文字列操作関数)。それは自分のものを持っています一般的なタイトルまた。しかし、Linuxカーネルで最新のCを書くことは、他の場所で最新のCを書くのとは非常に異なります。
答え2
別のライブラリを使用してください。システムコールがカーネルに入るようにする標準ライブラリは使用できません。これが重要です。
だから他の図書館もあります。本に説明があるはずです。