はじめに
毎週1本様々な技術に関する記事を投稿しています。
もし興味のある方は下のリンクから他の記事も見ていただければ幸いです。
@7_inai_
リンカとは
リンカ(linker)とは、名前の通り(link=繋げる)、繋げる ために使用するソフトウェアツールです。具体的に言うと、コンパイラによって生成された成果物(オブジェクトファイル)を結合し、実行可能なファイルを生成するためのツール
です。
リンカの役割
①シンボル解決
シンボル解決とは、あるオブジェクトファイルの関数や変数を、別のオブジェクトファイルで使用したり、呼び出したりするために、アドレスを教えてあげることです。
②ライブラリのリンク
プログラムが外部ライブラリを使用している場合、リンカはこれらのライブラリをプログラムに結合し、必要な関数やリソースを提供することができます。
③不要なコードの削除
リンカは、実行可能ファイルに含まれるが使用されていないコードを、ファイルサイズの削減や、パフォーマンスの向上のために削除することがあります。
削除対象となるコードの例を以下に挙げます。
- 未使用の変数や関数
- コメントアウトされたコード
- 実行フロー外のコード
静的リンク/動的リンク
リンクには、静的リンクと動的リンクの2種類があります。
■静的リンク
コンパイル時に全てのオブジェクトファイルを、動かしたいオブジェクトファイルの中に静的にコピーする
やり方です。
プログラムがコンパイル時に必要なライブラリや依存関係を実行可能ファイルに組み込むため、実行時にリンク関連のエラーが出ることがない一方で、ファイルサイズが大きくなります。
■動的リンク
プログラムが、実行時に必要なライブラリをロード
します。実行可能ファイルは、ライブラリへのリンク情報だけを持ち、ライブラリはシステムの共有ライブラリとして提供されます。
特徴としては、静的リンクの真逆となるため割愛します。
終わりに
リンカは、プログラムの骨格を形作る重要なツールです。プログラミングの世界において、リンカの役割を理解し、適切に活用することは、効率的なソフトウェア開発と最適化につながります。
最後までお付き合いくださりありがとうございました。