0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HelloWorld本 第4章

Last updated at Posted at 2024-02-05

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

エラーになるマクロやシンボルは無効化する。
ライブラリはソースコードのリンクを保持する為、ソースコードを削除すると参照できない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?