5

皆さん、ARM Cortex-A8 プロセッサ用にコンパイルしたプロジェクトがあります。これを行うためにGCCを利用しています。現在、実行可能ファイルのサイズは 220.1 KB です。ここで、makefile を変更し、フラグを追加し-mthumbます。makefile の行は次のようになります。

gcc -mcpu=cortex-a8 -mthumb -marm -mfloat-abi=softfp -mfpu=neon

すべてのメイクファイルでこの変更を行い、プロジェクトをビルドしましたが、最終的に取得した実行可能ファイルは依然として 220.1 KB のままです。

コマンドラインにもう1つ変更を加え、 -mthumb-interwork オプションを追加しました

gcc -mcpu=cortex-a8 -mthumb -mthumb-interwork -marm -mfloat-abi=softfp -mfpu=neon

もう一度、同じサイズの 220.1 KB の実行可能ファイルを取得します。これをしている間、私は何かを見逃していますか?

2 つの数値の最小値を見つける小さなプログラムを作成し、次のコマンド ラインを使用してコンパイルしました。

gcc main.c -o main

8.5 KB の実行可能ファイルを取得します

次に、私は

gcc -mthumb main.c -o main

まだ 8.5 KB の実行可能ファイルを取得しています。

ここで何が問題なのですか?

cat /proc/cpuinfo親指がプロセッサで本当にサポートされているかどうかを確認したところ、実際にサポートされていることがわかりました。わかった -

Processor: ARMv7 Processor rev 5 (v7l)
Features: swp half thumb fastmult vfp edsp neon vfpv3
....
....
4

3 に答える 3

6

-marm は、親指のない腕を持っていることを意味すると思います。-marm を削除してみてください。

于 2010-11-06T00:32:31.957 に答える
2

実際のコードがないとなんとも言えませんが、いくつか提案があります。

  1. 最適化を有効にします。(例 -O3 -ffunction-sections -fdata-sections)
  2. 実行可能ファイルを削除して、デバッグ情報がカウントされないようにします。
  3. ファイルのサイズではなく、実際のコード (.text) のサイズを確認してください。たぶん、いくつかのパディングが行われています。そのためにobjdumpを使用できます。
  4. アセンブリ コードをダンプし (-S スイッチ)、実際に ARM 命令を生成する場合と Thumb を生成する場合があることを確認します。
于 2010-11-05T16:15:58.283 に答える
0

一部のコンパイラでは、ARMv7 用にコンパイルする場合、thumb がデフォルトです。元の実行可能ファイルが適切にビルドされていないことは確かですか?

-mno-thumb でビルドしてみて、コード サイズが増加するかどうかを確認してください。

于 2010-11-05T15:46:46.477 に答える