制作bsp时编译工程出错Error: L6218E: Undefined symbol fsync (referred from syscalls.o)的解决办法

出现错误是:
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\keil525\ARM\ARMCC\Bin'
Build target 'rt-thread'
compiling syscalls.c...
linking...
.\build\keil\Obj\rt-thread.axf: Error: L6218E: Undefined symbol fsync (referred from syscalls.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
Finished: 2 information, 0 warning and 1 error messages.
".\build\keil\Obj\rt-thread.axf" - 1 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed: 00:00:01
解决思路:
移植的是v4.1.0版本bsp stm32里f4;
- 编译f1看看是否有如上错误,结果也有错误;
- 编译开发版本里f4,看看是否有错误,结果无错误;
- 对比代码;
原始代码:
int _sys_ensure(FILEHANDLE fh)
{
return fsync(fh);
}
修改成如下即可:
int _sys_ensure(FILEHANDLE fh)
{
#ifdef DFS_USING_POSIX
return fsync(fh);
#else
LOG_W("%s: %s", __func__, _WARNING_WITHOUT_FS);
return 0; /* error */
#endif /* DFS_USING_POSIX */
}
如果,感到此时的自己很辛苦,那告诉自己:容易走的都是下坡路。坚持住,因为你正在走上坡路,走过去,你就一定会有进步。如果,你正在埋怨命运不眷顾,开导自己:命,是失败者的借口;运,是成功者的谦词。命运从来都是掌握在自己的手中,埋怨,只是一种懦弱的表现;努力,才是人生的态度。

浙公网安备 33010602011771号