5

たとえば、Android は glibc ではなくバイオニックを使用していますが、glibc ではなくバイオニックhttp://en.wikipedia.org/wiki/Bionic_(software)を実際に使用していることを確認するにはどうすればよいですか?

/procファイルシステムでこの情報を見つけることができますか、または現在のシステムでバイオニックが使用されていることを確認できるコマンドはありますか?

ところで、組み込みシステムで複数の c lib を持つことは可能ですか?

4

1 に答える 1

4

Bionic と Glibc のどちらにリンクされているかに応じて異なる動作が必要なコードがある場合、これはコンパイル時に決定でき、決定する必要があります。いずれにせよ、Bionic と Glibc はバイナリ互換ではないため、コンパイル時に 1 つのヘッダー セットにコミットする必要があります。

#if __BIONIC__
/* Bionic-specific code */    
#elif __GLIBC__
/* Glibc-specific code */
#else
#error "This C library is not supported"
#endif

C ライブラリに関する情報ではなく、カーネルに関する情報が含まれて/procいるため、には情報がありません。/proc

理論的には、C ライブラリをシステム上にいくつでも置くことができます。ただし、組み込みシステムでは通常、コード サイズを抑えようとするため、これは非常に珍しいことです。複数の C ライブラリが期待される唯一のシステムは、その開発者がたまたまクロスコンパイルしていない場合 (そもそもまれです)、組み込み開発者のマシン上にあります。さらに、Bionic は Android でのみ使用され、Android では Bionic のみが使用されるため、すべての Android システムには Bionic があり、他のシステムには Bionic がありません。非 Android Linux システムには、Glibc または (組み込みシステムの場合) uClibc や Dietlibc などの他の libc のいずれかの他のライブラリがあります。

于 2012-08-26T19:06:55.820 に答える