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

image

出现错误是:

*** 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;

  1. 编译f1看看是否有如上错误,结果也有错误;
  2. 编译开发版本里f4,看看是否有错误,结果无错误;
  3. 对比代码;

原始代码:

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 */
}

posted @ 2022-08-19 08:59  我爱茜茜公主  阅读(880)  评论(0)    收藏  举报