BionicまたはGlibcにリンクされているかどうかによって動作が異なる必要があるコードは、コンパイル時に決定する必要があります。 BionicとGlibcはバイナリ互換性がありませんので、コンパイル時に1組のヘッダーにコミットする必要があります。
#if __BIONIC__
/* Bionic-specific code */
#elif __GLIBC__
/* Glibc-specific code */
#else
#error "This C library is not supported"
#endif
/proc
はないCライブラリについては、カーネルに関する情報が含まれているため、あなたは/proc
内の任意の情報を見つけることができません。
理論上、多くのCライブラリをシステムに自由に配置することができます。しかし、これらは一般的にコードサイズを小さくしようとするので、組み込みシステムでは非常に珍しいでしょう。デベロッパーがクロスコンパイルされていない場合(最初はまれです)、複数のCライブラリーが組み込み開発者のマシンにある唯一のシステムです。さらに、BionicはAndroid上でのみ使用され、AndroidではBionicのみが使用されるため、AndroidシステムにはBionicがあり、他のシステムにはBionicがありません。 Android以外のLinuxシステムには、Glibcまたは(組み込みシステムの)uClibcやDietlibcなどの他のlibcのライブラリがあります。
各アプリケーションプログラムがそのlibcに静的にリンクされている場合、異なるアプリケーションによって異なるlibcsが使用されている可能性があります。 – sawdust
アプリケーションを静的にそのCライブラリにリンクする方法は? – hugemeow
gccの場合はリンク時に '-static'オプションを使います。実行可能ファイルが静的であるか動的にリンクされているかを知るには、ユーティリティ 'file'を使います。 'strings'を使って、動的にリンクされた実行可能ファイルによって使用されるライブラリとエントリポイントをリストします。 – sawdust