2011-06-18 9 views
3

Cプログラムをコンパイルするとき、gccはデフォルトで標準Cライブラリにリンクします。実行可能ファイルのサイズを最小限に抑えるために、完全なC標準ライブラリの代わりに、選択された関数、たとえばprintfをリンクすることは可能ですか?gccが必要な機能のみをリンクする

答えて

5

ほとんどの伝統的なリンカーでは、静的ライブラリのリンクはオブジェクトファイルごとに行われます。 gccは通常、使用しているシステム上でシステムリンカを使用します。

伝統的に静的ライブラリは、ライブラリーを形成するオブジェクトファイルからなるだけでアーカイブファイルです。静的ライブラリをプログラムにリンクすると、ライブラリ内のオブジェクトファイルが抽出され、未解決のシンボルを解決するのに役立つライブラリのオブジェクトファイルによって生成されたものも含めて、未解決のシンボルを解決するのに役立ちます。理論的には

、標準ライブラリの実装は、機能ごとに1つのオブジェクト・ファイルで構成され、その後、あなただけが明示的に呼び出される関数だけになるだろう標準ライブラリ関数の間にはdepedenciesがなかった場合。実際には、明示的に呼び出すよりも多くの機能を使用する可能性があります。

ダイナミックリンクは完全に異なります。この場合、プログラムには、実行時にプロセスのメモリ空間全体にロードされる標準ライブラリ共有オブジェクトへの参照が含まれます。

関連する問題