コンパイル中に未使用の関数を削除してコードサイズを最小化する

未使用関数をオブジェクトファイルから削除するには

  1. ソースコードをコンパイルします。

  2. リンカオプション --feedback=filename を使用して、フィードバックファイルを作成します。デフォルトでは、未使用関数の削除に関するフィードバックが生成されます。

  3. コンパイラオプション --feedback=filename を使用して再コンパイルし、フィードバックファイルをコンパイラに送ります。

コンパイラはリンカが生成したフィードバックファイルを使用して、リンカが後で未使用関数を破棄できるようにソースコードをコンパイルします。

Note

リンカのフィードバックを最大限に活用するには、完全なコンパイルとリンクを 2 回以上実行します。通常は、前回のビルド時のフィードバックを使用して 1 回コンパイルしてリンクすれば十分です。

フィードバックファイルが存在しない場合でも、--feedback=filename オプションを指定できます。これにより、フィードバックファイルが存在するかどうかに関係なく、同じビルドファイルまたはメイクファイルを使用できます。以下に例を示します。

armcc -c --feedback=unused.txt test.c -o test.o
armlink --feedback=unused.txt test.o -o test.axf

初めてアプリケーションをビルドする際、アプリケーションは正常にコンパイルされますが、コンパイラによって、指定したフィードバックファイルが存在しないために読み出すことができないという警告メッセージが表示されます。その後、リンクコマンドによって、フィードバックファイルが作成され、イメージがビルドされます。2 回目以降のコンパイル時には、前のリンク手順のフィードバックファイルを使用して、特定された未使用の関数を削除します。

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0472BJ
Non-ConfidentialID011811