glibc

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

GNUCライブラリ
原作者ローランド・マグラス
開発者GNU Project、UlrichDrepperによるほとんどの貢献
初回リリース1987 ; 35年前[1] (1987
安定リリース
2.34 [2] ウィキデータでこれを編集する / 2021年8月2日
リポジトリ
で書かれているC
オペレーティング・システムUnixライク
タイプランタイムライブラリ
ライセンス2001:LGPL-2.1以降[a]
1992:LGPL-2.0以降[b]
Webサイトwww .gnu .org / software / libc /
Linux APIは、Linuxカーネルのシステムコールインターフェイス、GNU Cライブラリ(GNUによる libdrm libalsa およびlibevdevfreedesktop.orgによる)で構成されています。
GNU CライブラリはLinuxカーネルのシステムコールのラッパーです。
LinuxカーネルとGNUCライブラリが一緒になってLinuxAPIを形成しますコンパイル後、バイナリはABIを提供します。

一般にglibcとして知られているGNUCライブラリは、GNUProjectによるC標準ライブラリの実装ですその名前にもかかわらず、 C ++(および間接的に他のプログラミング言語)も直接サポートするようになりました。それは1980年代にGNUオペレーティングシステム のためのフリーソフトウェアファウンデーション(FSF)によって始められました。

GNU劣等一般公衆利用許諾契約書の下でリリースされた[ 3] glibcは自由ソフトウェアです。GNU Cライブラリプロジェクトは、GNUシステムのコアライブラリと、カーネルとしてLinuxを使用する多くのシステムを提供します。これらのライブラリは、 ISO C11POSIX.1-2008BSD、OS固有のAPIなどを含む重要なAPIを提供します。これらのAPIには、 openreadwritemallocprintfgetaddrinfodlopenなどの基本的な機能が含まれています。 pthread_createcryptloginexitなど。

歴史

glibcプロジェクトは当初、主にRoland McGrathによって作成され、1980年代に10代の頃にフリーソフトウェアファウンデーション(FSF)で働いていました。[7] 1988年2月、FSFはglibcをANSICに必要な機能をほぼ完了したと説明しまし[8] 1992年までに、ANSI C-1989およびPOSIX.1-1990機能が実装され、POSIX.2で作業が進行中でした。[9] 1995年9月、Ulrich Drepperはglibcに最初の貢献をし、1997年までにほとんどのコミットが彼によって行われました。Drepperは長年にわたってメンテナシップの地位を維持しており、2012年まではプロジェクトへのすべてのコミットの63%を蓄積していました。[10]

2009年5月、glibcはGitリポジトリに移行されました。[10]

2010年に、GPLと互換性のないglibcでのSunRPCの実装によって引き起こされたライセンスの問題が解決されました。これは、 BSDライセンスの下でSunRPCコンポーネントを再ライセンスすることで修正されました[11] [12]

glibcを開始してから30年後の2017年7月、Roland McGrathは彼の辞任を発表しました。もう私が必要です」。[7]

バージョン履歴

ほとんどのシステムでは、glibcのバージョンはlibファイル(たとえば、/ lib / libc.so.6)を実行することで取得できます。

フォークとバリアント

1994年、Linuxカーネル の開発者はglibcをフォークしました。彼らのフォーク「Linuxlibc」は、1998年頃まで個別に維持されていました。著作権の帰属が不十分だったため、変更をGNULibcにマージすることはできませんでした。[28] FSFが1997年1月にglibc2.0をリリースしたとき、カーネル開発者はglibc 2.0がPOSIX標準に優れているため、Linuxlibcを廃止しました。[29] glibc 2.0は、より優れた国際化とより詳細な変換、IPv6機能、64ビットデータアクセス、マルチスレッドアプリケーションの機能、将来のバージョンの互換性、およびコードの移植性も向上しました。[30]最後に使用されたバージョンのLinuxlibcは、内部名を使用していました(sonamelibc.so.5これに続いて、Linux上のglibc2.xはsonamelibc.so.6 [31] [より良いソースが必要]を使用します。

2009年に、Debianと多くの派生物がglibcからバリアント[33] eglibcに切り替わりました。[34] Eglibcは、 FreescaleMIPSMontaVista、およびWindRiverで構成されるコンソーシアムによってサポートされてました。[35]組み込み用途により適した変更が含まれ、 PowerPCe500などのglibcでサポートされていないアーキテクチャのサポートが追加されましたeglibcのコードは、バージョン2.20でglibcにマージされました。[36] 2014年以降、eglibcは廃止されました。Yoctoプロジェクトまた、 Debian Jessieのリリース以降、Debianもglibcに戻りました[37]

運営委員会

2001年以降、図書館の開発は委員会によって監督され[38]、ウルリッヒ・ドレッパー[39]が主要な寄稿者および維持者として維持されました。運営委員会の設置は、ウルリッヒ・ドレッパーがリチャード・ストールマンによる敵対的買収の失敗として公然と説明したため、世間の論争に巻き込まれました[40] [41] [42] [43]

2012年3月、運営委員会は、コミュニティ主導の開発プロセスを支持して、解散し、Drepperを削除することを決議しました。ライアン・アーノルド、マキシム・クヴィルコフ、ジョセフ・マイヤーズ、カルロス・オドネル、アレシャンドリ・オリバがGNUの維持管理の責任を負っています(追加の意思決定力はありません)。[44] [45]

機能性

glibcは、Single UNIX SpecificationPOSIX(1c、1d、および1j)に必要な機能と、ISO C11ISO C99Berkeley Unix(BSD)インターフェイス、System Vインターフェイス定義(SVID)、およびX / Open Portability Guide(XPG)、Issue 4.2、XSI(X / Open System Interface)準拠システムに共通のすべての拡張機能とすべてのX / OpenUNIX拡張機能。

さらに、glibcは、 GNUの開発中に有用または必要であると見なされた拡張機能も提供します

サポートされているハードウェアとカーネル

glibcは、さまざまなカーネルとさまざまなハードウェアアーキテクチャを実行するシステムで使用されます。最も一般的な用途は、 x86ハードウェアでLinuxカーネル使用するシステムですが、公式にサポートされているハードウェア[46]には、32ビットARMとその新しい64ビットISA(AArch64)C-SKYDEC AlphaIA-64が含まれます。 、Motorola m68kMicroBlazeMIPSNios IIPA-RISCPowerPCRISC-Vs390SPARC、およびx86(古いバージョンはTILEをサポートします)。HurdカーネルとLinuxカーネルを公式にサポートしています。さらに、 FreeBSDおよびNetBSDのカーネル(それぞれDebian GNU / kFreeBSDおよびDebianGNU / NetBSDシステムが構築されている)で実行されるパッチが適用されたバージョンと、 OpenSolarisのフォークバージョンがあります。[47]これは(編集された形式で)使用されBeOSHaikuではlibroot.soという名前が付けられています。[48]

小型デバイスでの使用

glibcは、過去に「肥大化」していて、他のライブラリよりも遅いと批判されてきました。たとえば、 Linus Torvalds [49]組み込みLinuxプログラマーからです。このため、より小さなフットプリントを強調するいくつかの代替C標準ライブラリが作成されました。ただし、多くの小型デバイスプロジェクトでは、アプリケーションのサポート、標準への準拠、および完全性のために、小型の代替プロジェクトよりもGNUlibcを使用しています。例としては、Openmoko [50]FamiliarLinux for iPaqハンドヘルド(GPEディスプレイソフトウェアを使用する場合)があります。[51]

互換性レイヤー

のエコシステム用に作成されたプログラムをglibcインターフェース提供システムで実行できるようにする互換性レイヤー(「シム」)があります。これらには、 AndroidのBionicの互換性レイヤーであるlibhybris 、およびWindowsAPIからglibcおよびUnixライクなシステムで利用可能な他のネイティブAPIへ の互換性レイヤーと見なすことができるWineが含まれます。

も参照してください

メモ

  1. ^ LGPL-2.1以降、2001年7月6日以降、バージョン2.2.4。[3] [4]
  2. ^ LGPL-2.0以降、1992年から2001年7月5日まで。バージョン1.04?2.2.3へ。[5] [6]

参考文献

  1. ^ コーベット、ジョナサン(2012年3月28日)。「GNUlibcのターニングポイント」LWN.net。
  2. ^ "GNUCライブラリバージョン2.34が利用可能になりました" ; 著者名文字列:Carlos O'Donell; 発行日:2021年8月2日; 取得:2021年8月3日。
  3. ^ a b "sourceware.org Git --glibc.git / blob --Makefile"sourceware.org 2021年6月10日取得LGPL-2.1以降のヘッダー
  4. ^ "sourceware.org Git --glibc.git / commit --LGPLv.2.1へのアップデート"sourceware.org2001年7月6日2021年6月10日取得LGPL-2.1以降のヘッダー
  5. ^ "glibc-1.04.tar.Z"1992年9月4日2021年12月22日取得
  6. ^ "sourceware.org Git --glibc.git / commit-初期インポート:Makefile"sourceware.org1995年2月18日2021年6月10日取得LGPL-2.0以降のヘッダー
  7. ^ a b "RolandMcGrathがglibcメンテナ[LWN.net]としてお辞儀をします"lwn.net2017年7月7日2017年7月8日取得
  8. ^ 「GNUの会報、vol。1no。4、1988年2月」ほとんどのライブラリは完了しています。Roland McGrath [...]には、ANSICライブラリ関数のほぼ完全なセットがあります。今年の春に準備が整うことを願っています。
  9. ^ 「GNUの会報、vol。1no。12」現在、すべてのANSI C-1989およびPOSIX.1-1990関数が含まれており、POSIX.2およびUnix関数(BSDおよびSystem V)で作業が進行中です。
  10. ^ a b Corbet、Jonathan(2012年3月28日)。「GNUlibcのターニングポイント」LWN.net。プロジェクトのgitリポジトリ(1995年までの変更が含まれています)で見つかった約19,000のコミットのうち、12,000を超えるコミットがUlrichによって作成されました。
  11. ^ 「Glibcがついにフリーソフトウェア-TheH Open:NewsandFeatures」H-オンライン2021年9月19日取得{{cite web}}: CS1 maint: url-status (link)
  12. ^ フィップス、サイモン(2010年9月2日)。「Gnu / Linux:最後に、それは本当に無料のソフトウェアです」InfoWorld2021年9月19日取得{{cite web}}: CS1 maint: url-status (link)
  13. ^ 「CosmicCuttlefish / ReleaseNotes-UbuntuWiki」
  14. ^ 「第5章RHEL8.0.0リリースRedHat Enterprise Linux8」
  15. ^ 「第2章Debian10の新機能」
  16. ^ 「変更/ GLIBC228」
  17. ^ 「RedHatBugzilla –バグ1598403」
  18. ^ "sourceware.org Git --glibc.git / blob --NEWS"
  19. ^ 「DiscoDingo / ReleaseNotes-UbuntuWiki」
  20. ^ 「変更/ GLIBC229」
  21. ^ 「RedHatBugzilla –バグ1653403」
  22. ^ "sourceware.org Git --glibc.git / blob --NEWS"
  23. ^ 「EoanErmine / ReleaseNotes-UbuntuWiki」
  24. ^ 「変更/ GLIBC230」
  25. ^ "Focal(20.04):glibcパッケージ:Ubuntu"
  26. ^ 「変更/ GLIBC231」
  27. ^ 「GNUCライブラリバージョン2.32が利用可能になりました」sourceware.org 2020年8月13日取得
  28. ^ 「glibcとLinuxlibcの歴史」自由ソフトウェアマガジン2021年5月10日取得{{cite web}}: CS1 maint: url-status (link)
  29. ^ 「フォーク:それはあなたにも起こり得る」2008年9月12日。GNULIBCとLinuxLIBCの分割-Linuxが安定するまで何年も続き、その後フォークが1つのプロジェクトに再統合されました。
  30. ^ リー、エリオット(2001)。「glibc2.xとレガシーシステムライブラリの技術的比較」2004年4月11日にオリジナルからアーカイブされました。
  31. ^ 「フォークの恐れのエッセイ。「6。glibc-> Linux libc-> glibc ""
  32. ^ 「EGLIBC:FAQ」www.eglibc.org 2021年9月16日取得
  33. ^ eglibc開発者は、eglibcはglibcのフォークではなく、上流のglibcプロジェクトからのパッチを受け入れるバリアントであることを強調しました。[32]
  34. ^ Vaduva、Alexandru(2016)。Linux:組み込み開発:Linuxの力を活用して、魅力的で強力な組み込みLinuxプロジェクトを開発します:3つのモジュールのコースアレックスゴンザレス、クリスシモンズ。英国バーミンガム。p。24. ISBN 978-1-78712-445-5OCLC960471438 _
  35. ^ Stiebert、Julius(2009年5月6日)。"Debian wechselt zurEglibc"golem.de2021年9月16日取得{{cite web}}: CS1 maint: url-status (link)
  36. ^ シモンズ、クリス(2017)。組み込みLinuxプログラミングの習得:組み込みLinuxの可能性を最大限に引き出します(第2版)。英国バーミンガム。p。26. ISBN 978-1-78728-885-0OCLC995052708 _
  37. ^ Vaduva、Alexandru(2015)。Yoctoプロジェクトを使用した組み込みLinuxの学習:Yoctoプロジェクトコンポーネントを使用して強力な組み込みLinuxシステムを開発します英国バーミンガム。p。29. ISBN 978-1-78439-519-3OCLC914797028 _
  38. ^ 「glibcホームページ」2001年にGNUC Library Steering Committee ...が設立され、現在はMark Brown、Paul Eggert、Andreas Jaeger、Jakub Jelinek、Roland McGrath、AndreasSchwabで構成されています。
  39. ^ 「ウルリッヒドレッパー」LinkedIn 2012年6月13日取得
  40. ^ オンライン、ハイゼ。「オープンソース-EntwicklerkritisiertStallman」heise online(ドイツ語)2021年9月16日取得{{cite web}}: CS1 maint: url-status (link)
  41. ^ ウルリッヒ・ドレッパー(2000年6月26日)。「RMSが再び登場しました」sourceware.org 2015年11月20日取得数週間前、RMSは私に対する次の攻撃を開始しました(1通のメールに続いて間接的な影響力の試みが続き、今日は別のメールが続きます)。本質は、私が「GNUポリシー」に従わないため、私が参加できる運営委員会に置き換える必要があると彼が不満を言っていることです。彼が委員会の他のメンバーとして両方を提案したので、あなたの何人か(すなわち、ローランドとアンドレアスS.)はおそらくこれについて知っています。さらに、Mark Brownがリストされていました(IBMでこの名前の誰かがこのグループにも当てはまるのは知っていますが、それが本当に彼であるかどうかはわかりません)。とにかく、私はこれを完全に拒否します。それはまったく役に立たない、反対が真実である。まず、違反している重要なポリシーを認識していません。唯一のものは私がm明らかに政治的意図(もちろん犠牲である)を持っているRMSからの命令に従わず、おそらく私はWinblowzを気にしない(後者がまったく重要である場合)。これはいずれも変更されません。
  42. ^ ウルリッヒ・ドレッパー(2001年8月15日)。「glibc2.2.4」sourceware.com 2015年11月29日取得そして今、あまり良くないことのために。ストールマンは最近、私がglibc開発の敵対的買収と呼ぶものを試しました。彼は私の後ろで陰謀を企て、他の主要な開発者に支配権を握るように説得しようとしたので、最終的に彼は支配権を握り、彼を喜ばせるものは何でも口述することができます。この試みは失敗しましたが、彼は至る所で人々に圧力をかけ続け、それは本当に醜くなりました。結局、私はいわゆる「運営委員会」(SC)の設立に同意しました。
  43. ^ 2001年8月19日のslashdot.comのrms-accused-of-attempting-glibc-hostile-takeover
  44. ^ McGrath、ローランド(2012年3月26日)。「glibc運営委員会解散」Sourceware.org 2012年6月13日取得
  45. ^ マイヤーズ、ジョセフS.(2012年3月26日)。「GNUCライブラリの開発とメンテナ」Sourceware.org 2012年6月13日取得
  46. ^ 「GNUCライブラリマシンメンテナ」
  47. ^ バートリー、デビッド; スパング、マイケル。"GNU / kOpenSolaris(GNU libc / base + OpenSolarisカーネル)" 2008年12月16日取得
  48. ^ 「俳句ソース」libroot.soはGNUプロジェクトの一部ではなく、Haikuソースコードに含まれています。
  49. ^ Torvalds、Linus(2002年1月9日)。「glibcメーリングリストへの投稿」
  50. ^ 「OpenMokoコンポーネント」glibc(uClibCではなく)を使用します...代替案は、より多くのスペースを節約し、より最適化される可能性がありますが、統合の頭痛の種になる可能性が高くなります
  51. ^ 「Re:[Familiar] Familiar 0.8.4のどのglibc?」質問:Familiar 0.8.4のビルドに使用されたGLIBCのバージョンはどれですか?回答:2.3.3

外部リンク