コードサイズを減らすために、実行可能ファイルからできるだけ多くのデッドコードを削除することを目指しています。スタック オーバーフローに関する他の質問からいくつかのヒントに従い-fdata-sections -ffunction-sections... + ...--gc-sections
、makefile で使用しています。ただし、1つ質問があります。
私は最初にフラグとして.o
使用してすべてのをコンパイルしています。-fdata-sections -ffunction-sections
次に、これらを静的ライブラリ ( lib.a
) にアーカイブしています。次に、これをリンクする実行可能ファイルを作成し、このリンカーでフラグlib.a
を使用しています。--gc-sections
しかし、これでは改善されないようです。これは、最初にアーカイブしているためですか? アーカイブはセクションへの分割の影響を取り除きますか? (また、私が使用している「ストリップ」の形式は、実行可能ファイルにまったく影響を与えないようです!)