3

を使用してARM Cortex-M4用のコードをコンパイルしようとすると、次のエラーが発生します

gcc -mcpu=cortex-m4 arm.c  

`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
arm.c:1: error: bad value (cortex-m4) for -mtune= switch

私はGCC 4.7.1 ARM optionsに従っていました。重要なオプションが欠落しているかどうかはわかりません。GCC for ARM を使用するためのキックスタートも非常に役立ちます。

4

3 に答える 3

4

starblue がコメントで暗示しているように、そのエラーは、ARM にコンパイルするためのクロスコンパイラではなく、x86 CPU 用にコンパイルするために構築されたネイティブ コンパイラを使用しているためです。

GCC は、特定のコンパイラ バイナリで 1 つの一般的なアーキテクチャ タイプのみをサポートします。したがって、GCC の同じコピーを 32 ビットと 64 ビットの両方の x86 マシンでコンパイルできますが、同じもので x86 と ARM の両方にコンパイルすることはできません。 GCC のコピー -- ARM 固有の GCC が必要です。

(auselen が示唆するように、ビルド済みのものを取得すると、セットアップの開始点としてのみ使用している場合でも、かなりの作業を節約できます。GCC、binutils、および C ライブラリが必要です。少なくとも、それらはすべて、事前に構築されたバージョンが既に結合作業を行っている個別のオープンソース プロジェクトです. Sourcery CodeBench Liteをお勧めします。 .)

于 2012-11-01T08:43:38.947 に答える
0

エラー メッセージに -mcpu is deprecated と表示されているため、記載されている他のオプションを使用する必要があります。ただし、「非推奨」とは、その使用が引き続きサポートされない可能性があることを意味します。それはまだ動作します。

ARM Cortex-M4 は ARM アーキテクチャ V7E-M であるため、使用する必要があります-march=armv7-m(ドキュメントには具体的には記載されていませんarmv7e-mが、ドキュメントが最後に更新された後に追加された可能性があります。これEは基本的に M3 と M4 の違いです - DSP 命令、そのため、コンパイラはこれらの命令を利用するコードを生成しません. ARM の Cortex-M DSP ライブラリを使用することは、これらの命令を使用してアプリケーションに利益をもたらす最良の方法です. 部品に FPU がある場合は、コードを有効にする他のオプションが必要になります.そのための世代。

于 2012-11-01T18:49:56.463 に答える