77

私はマイクロコントローラの分野に不慣れです。AVR マイクロコントローラ用のプログラムをコンパイルしている IDE を移植して、ARM マイクロコントローラ用のプログラムをコンパイルする必要があります。コンパイラを AVR から ARM に置き換えたばかりで、誰かが言ったようにいくつかのオプションを追加しました。コマンドは次のとおりです。

\ARM-GCC\bin\arm-none-eabi-gcc -O0 -ffunction-sections -Wall -std=gnu99 -mfloat-abi=soft 
-Wa,-adhlns="$@.lst" -fmessage-length=0 -mcpu=cortex-m0 -mthumb -g3 -gdwarf-2 -Wl,
--gc-sections -o <Dir_name>\Build_Files\Blink_arm.cpp.elf  <Dir_name>\Build_Files\Blink_arm.cpp.o <Dir_name>\Build_Files\core.a 
-L<Dir_name>\Build_Files -lm 

実行すると、次のエラーが表示されます。

tools/arm-gcc/bin/../lib/gcc/arm-none-eabi/4.6.2\libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text+0x18): undefined reference to `_exit'  
collect2: ld returned 1 exit status

このエラーとは何か、またどのように解決すればよいかについて、助けをいただけますか。また、コマンドラインのこれらのオプションが何を指定しているのかわかりません。

4

3 に答える 3

98

arm-none-eabi-gccこれは、1 つのマシン/アーキテクチャでファイルをコンパイルして ARM ターゲット マシンにロードするときに発生します。ほとんどの場合、セミホスティングを使用しておらず、リターゲットしたいと考えています。

ARM® コンパイラ ツールチェーン バージョン 4.1 は、以下を示します。

セミホスティングは、ARM ターゲット上で実行されるコードが、デバッガーを実行しているホスト コンピューター上で通信し、入出力機能を使用できるようにするメカニズムです。

ツールチェーンの readme.txt (フォルダーの下.../gcc-arm-none-eabi-VERSION/share/doc/gcc-arm-none-eabi) から:

** 非セミホスティング/リターゲット

リターゲットを使用している場合は、次のようにリンクします: $ arm-none-eabi-gcc --specs=nosys.specs $(OTHER_LINK_OPTIONS)

--specs=nosys.specsには十分でした;)

于 2014-05-28T21:31:03.780 に答える