ホームページ > バックエンド開発 > C++ > 未使用のシンボルを削除して C/C 実行可能ファイルのサイズを減らすにはどうすればよいですか?

未使用のシンボルを削除して C/C 実行可能ファイルのサイズを減らすにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-17 13:05:25
オリジナル
988 人が閲覧しました

How Can I Reduce C/C   Executable Size by Stripping Unused Symbols?

実行可能ファイルのサイズの最適化: 未使用の C/C シンボルの削除

実行可能ファイルのサイズを最小限に抑えることは、特にリソースに制約のある環境では非常に重要です。実行可能ファイルから未使用のシンボルを削除することにより、メモリ使用量の点で無駄がなく、より効率的になります。この記事では、GCC と ld を使用してこの最適化を実現する方法について説明します。

GCC と ld の構成

GCC と ld は、実行可能ファイルとライブラリから未使用のシンボルを削除するように構成できます。これを行うには、コンパイルの 2 段階が必要です。

  1. データ分離: コンパイル中に、GCC で -fdata-sections フラグと -ffunction-sections フラグを使用します。これらのフラグは、関数、クラス、外部変数などのコードを各翻訳単位内の個別のセクションに分離するようコンパイラーに指示します。
  2. リンクの最適化: 翻訳単位をリンクするときは、リンカーを使用します。最適化フラグ -Wl、--gc-sections。このフラグは、リンカーが参照されていないセクションを自動的に破棄するようにトリガーします。

ファイル test.cpp について考えてみましょう。このファイルには 2 つの宣言された関数が含まれていますが、そのうちの 1 つは関数です。未使用です。最終的な実行可能ファイルから未使用の関数を除外するには、次のコマンドを使用します。

gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections
ログイン後にコピー

-Os フラグは、GCC にコード サイズの最適化を優先するよう指示します。

結論

これらの構成変更を適用することにより、コンパイラーとリンカーは未使用のシンボルを識別して削除し、ファイルのサイズを大幅に削減できます。結果として得られる実行可能ファイル。この最適化は、組み込みシステムやリソースに厳しい制限があるその他の環境にとって特に価値があります。

以上が未使用のシンボルを削除して C/C 実行可能ファイルのサイズを減らすにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート