glibc の代わりに libc を使用して Linux ディストリビューションを構築できますか

glibc の代わりに libc を使用して Linux ディストリビューションを構築できますか

最近、非常に優秀なソフトウェア エンジニアである友人と話をしたのですが、その友人は、libc が glibc よりもはるかに優れているという事実を概説した記事をいくつか見せてくれました。

代わりに libc を使用することが可能かどうか、またこの方法を採用した場合にどのような問題が発生するかが気になります。

答え1

コンテキスト: 上記のコメントから、BSD 風libcを意味していると想定します。

すでに検討されていると思いますが、libc特定のカーネルに密接に結びついている傾向があり (glibc抽象化レイヤーがあるため、ある程度の移植性は得られますが、抽象化レイヤーが引き起こす通常の問題も発生します)、BSD をlibcLinux カーネルで動作させるには、ほぼ完全な書き直しが必要になります。主要なシステム サービスは、2 つのシステム間で大きく異なります (例: BSD ではlibcパイプ/FIFO がないものと想定されています。BSD では代わりにソケット ペアが使用されるためです。逆に、Linux ではパイプ互換のソケット ペアがサポートされていません)。

の移植性レイヤーのおかげで、逆の方向に進むこと (Debian には FreeBSD カーネル上に実験的な Linux ユーザースペースがあると思います) が可能になりますglibc

答え2

libcの実装は数多くあります。これを使用してシステムを構築することは可能であり、非常に一般的です。uClibcまたはEGLIBC特に難しいことではありません。ビルドルート

答え3

多くのソフトウェアは、glibc自分自身やglibcマクロ、あるいはglibcスタイルに依存しているため、ビルドに失敗します。内部から知っていれば、どんなソフトウェアでも簡単に修正できますglibc。例えば、ここを見てください。Linux ヘッダーヘッダーはまだ完成していませんmuslが、コミットをチェックアウトして、この作業がどのようになっているかを確認できます。

すべての開発者は、glibcベースシステムを使用してソフトウェアをテストします。プルリクエストなどの適切なソリューションを使用して、すべてのライブソフトウェア開発を修正し、他のソフトウェアと互換性を持たせることは不可能libcです。そのため、代替 libc を使用して汎用システムgentooを構築するには、無限の苦労が必要です。

組み込み開発者(openwrt例えば)はソフトウェアのバージョンを修正し、それを回避するのに多大な労力を費やしています。そのため、組み込みシステム(のようなopenwrt)は、ソースmuslまたはのような代替 libc を使用してビルドできますuclibc

glibcother に置き換える唯一の簡単で正しい方法は、other を使用してlibcすべての動作をシミュレートする特別なラッパーを実装することです。現在、そのようなプロジェクトはありません。glibclibc

関連情報