glibc
GNUの標準Cライブラリ実装であり、スタートアップ・システムコールラッパー・ライブラリ関数を提供する。
アセンブラと最適化に詳しい場合、自作することもできる。
アセンブラが必要な機能
カーネルだと、ブート・割り込み・ディスパッチ。
アプリケーションだと、スタートアップ・システムコールラッパー・setjmp()とlongjmp()。
ソースコードの検索
特徴的なキーワードで検索し、以下の条件に当てはまる行を除き、lessで反転表示する。
- 異なるアーキテクチャ
- 明らかに無関係なファイル
APIとABI
APIは機能、ABIは実装を規定する。
APIはソースコードとライブラリのインターフェースであり、ソースコードを無修正で移植できる。
ABIはバイナリとシステムのインターフェースであり、バイナリを無修正で移植できる。
- 命令セット、エンディアン、アライメント
- 呼び出し規約
- システムコール
- ファイル形式
glibcのビルド
glibcをビルドすると、標準CライブラリをC言語ベースで動的解析でき、ビルド時に生成されるファイルを調べることもできる。
ソースコードからインストールする時は、慣習的に以下のコマンドを使用する。
- ./configure (環境毎のMakefileを生成)
- make (ビルド)
- make install (インストールディレクトリにコピー)
./configure
インストールディレクトリを変更し、--disable-werrorを使用する。
アセンブラやリンカのバージョンやオプションのチェックでエラーになる為、エラー処理自体を無効化する。
make
エラーになるマクロやシンボルは無効化する。
ライブラリはソースコードのリンクを保持する為、ソースコードを削除すると参照できない。