コード サイズ最適化のための GCC および ld の未使用シンボルの削除
実行可能ファイル サイズの最適化は、特にリソースに制約のある組み込み環境では非常に重要です。この記事では、GCC と ld を使用して実行可能ファイルから未使用の C/C シンボルを削除する問題について説明します。
GCC の -fdata-sections フラグと -ffunction-sections フラグは、コードを翻訳単位内の個別のセクションに分割するようにコンパイラーに指示します。これにより、未使用のコード、データ、関数が個別のセクションに保存されます。
コードがコンパイルされると、リンカーは --gc-sections フラグを使用して未参照のセクションを削除します。このプロセスにより、使用されたコードのみが最終的な実行可能ファイルに保持されます。たとえば、2 つの関数 (そのうちの 1 つは未使用) を含む test.cpp というファイルから未使用のシンボルを削除するには、次を使用してコンパイルします。
gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections
-Os フラグは、GCC にサイズの最適化を優先するよう指示します。
これらのテクニックをビルド プロセスに組み込むことで、開発者は実行可能ファイルのサイズを大幅に削減し、リソースに制約のある環境での読み込みパフォーマンスを向上させることができます。
以上がGCC と ld を使用して未使用のシンボルを削除して実行可能ファイルのサイズを減らすにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。