开启 newlib-nano 选项
如有必要,可以更换 libc 库
图上标记的两处是矛盾的,按我的理解应该是这样的,如果不对请大家给与纠正:
minilibc
newlib
时使用标准库libc
newlib
时使用newlibc
使用minilibc的时候有个问题,以sprintf
为例说明一下问题:
即使引用stdio.h
编译器也会对sprintf
报警告,需要加上rt_
前缀或者声明一下才能消除警告。
难到需要手动添加在stdio.h
添加声明吗?这样的话kservice.c
声明的别名函数没什么意义啊
/* kservice.c */
int sprintf(char *buf, const char *format, ...) __attribute__((weak, alias("rt_sprintf")));
int snprintf(char *buf, rt_size_t size, const char *fmt, ...) __attribute__((weak, alias("rt_snprintf")));
int vsprintf(char *buf, const char *format, va_list arg_ptr) __attribute__((weak, alias("rt_vsprintf")));
并没有被移除,我能搜索到那个目录。
对于rtt-nano,默认就是使用minilib(通过Debug目录的Makefile发现的)
对于标准版来说,没有配置libc,使用的就是minilib, 否者使用newlib(自动生成的Makefile可证明我的观点).
在使用newlib的前提下,可以设置linker,使用newlib-nano, 使能printf的%f操作