KeilMDK编译错误Error: L6218E: Undefined symbol __aeabi_assert (referred from xxx.o).

问题描述:

AirPressure\AirPressure.axf: Error: L6218E: Undefined symbol __aeabi_assert (referred from mbrtu.o).

问题原因:

"Error: L6218E: Undefined symbol __aeabi_assert..." 能够发生是因为“ Project -> Options for Target -> on the Target tab - Use MicroLIB” 被选中。

KeilMDK编译错误Error: L6218E: Undefined symbol __aeabi_assert (referred from xxx.o)._第1张图片

microlib是一个比ARM标准C库小的独立库。为了节省大小,arm microlib c库不支持或实现几乎所有与操作系统交互的函数,例如abort()、exit()或assert()。

解决办法:

方法一:使用 “Keil::ARM_Compiler Pack

  1. Open the Manage Run-Time Environment dialog and expand Compiler -> I/O

    KeilMDK编译错误Error: L6218E: Undefined symbol __aeabi_assert (referred from xxx.o)._第2张图片

  2. Next to STDERR, check the box . In the variant column, select ITM .
  3. Click OK to close the dialog.

方法二:自己实现__aeabi_assert函数

方法三:禁用  assert()

On Project -> Options For Target -> on the C/C++ tab, for Define type "NDEBUG." - 使 assert() 函数不起作用。

方法四:禁用 MicroLIB

Under Project -> Options For Target -> in the top-right of the Target dialog。

 

你可能感兴趣的:(ARM)