Bionic libc

読み:バイオニック・リブ・スィー
外語:Bionic libc 英語
品詞:固有名詞

Androidで使われている標準Cライブラリ

目次

AndroidはLinuxカーネルを用いているが、標準CライブラリはLinuxで一般的なglibc(GNU libc)ではなく、BSDのCライブラリを基にして開発された独自のものを用いている。

Bionic libcは、BSDライセンスで提供されている。

由来

Androidで独自の標準Cライブラリが採用した理由は二つある。

  • コンパクト

    一つは、メモリーの限られる携帯機器で多くのプロセスが利用するため、コンパクトで、高速なものが必要となったためとされる。

    スレッド機能(pthread)など重そうな機能も、高速かつコンパクトな独自の実装となっているとされる。

  • ライセンス

    もう一つは、GPLをユーザースペースに伝搬させないため。

    Googleは、GPLはカーネルまでに留め、それより上は原則としてBSDライセンス相当とする方針としている。

    またglibcはLGPLだが、これを静的リンクしてしまうとLGPLが感染し、リバースエンジニアリング禁止がライセンス規約として不可となるなど、プロプライエタリーな環境では面倒な問題もある。

    これを避けるため、BSDライセンスで提供されるBionic libcが用意された。

内容

Androidでは、ソースコードのルートに/bionicとしてディレクトリが存在する。

この直下には、libc libdl libm libstdc++ libthread_db linker という6つのディレクトリがある。

  • libcの下に標準Cライブラリの一般的な関数があるが、ソースを見ると、OpenBSD由来であることが分かる。
  • libmの下は数学の関数(math.h関係)があるが、ソースを見ると、FreeBSD由来であることが分かる。
  • libstdc++はgccのそれと同名であるが全くの別物で、中身はほぼ何もしていないに等しい。例えばtypeinfoは何も返さないなど、C++のサポートは必要最小限ということが分かる。

それ以外は主にThe Android Open Source Projectの作成したものだが、BSDライセンスとなっている。

また、mallocは、glibcと同様にパブリックドメインのdlmallocがベースとなっている。

用語の所属
標準Cライブラリ
関連する用語
libc (Linux)

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club