web-dev-qa-db-ja.com

exit.c :(。text + 0x18):arm-none-eabi-gccを使用する場合の「_exit」への未定義の参照

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

\ARM-GCC\bin\arm-none-eabi-gcc -O0 -ffunction-sections -Wall -std=gnu99 -mfloat-abi=soft 
-Wa,-adhlns="[email protected]" -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

このエラーの内容と解決方法を教えてください。また、コマンドラインのこれらのオプションが何を指定するのかもわかりません。

39
Sharath U

つかいます --specs=nosys.specs

arm-none-eabi-gcc --specs=nosys.specs $(OTHER_LINK_OPTIONS)

参照:

42
ele1000

同じ問題がありました。解決策は次のとおりです。

  • オプションを追加-ffreestanding -fltoをコンパイラー呼び出し行に入れます。
  • オプションを追加-flto -ffreestanding -nostdlibをリンカー呼び出し行に入れます。
1
User Human