问题描述:
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” 被选中。
![](https://img-blog.csdnimg.cn/2019051113035610.png)
microlib是一个比ARM标准C库小的独立库。为了节省大小,arm microlib c库不支持或实现几乎所有与操作系统交互的函数,例如abort()、exit()或assert()。
解决办法:
方法一:使用 “Keil::ARM_Compiler Pack”
- Open the Manage Run-Time Environment dialog and expand Compiler -> I/O.
![](https://img-blog.csdnimg.cn/20190511130724451.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYXl1ZmVuZzUyMA==,size_16,color_FFFFFF,t_70)
- Next to STDERR, check the box . In the variant column, select ITM .
- 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。