使用环境:
操作步骤:
pkgs --update
引入 DS3231 软件包Onboard Peripheral Drivers
部分加入以下内容并选中开启:scons --target=mdk5
生成工程此时进行编译的时候,会报以下错误:
临时解决方法需要手动在文件 ds3231.c
中加入 #include <sys/time.h>
。
想请教下,上诉问题是我的操作步骤有问题导致的,还是因为 RT-Thread 的版本进行了更新导致的?
自己找原因的过程中,有注意到 [components/libc] Move time() and clock() function to libc time.c 这个提交将 time_t time(time_t *t)
从 components/drivers/rtc/rtc.c
移动到了 components/libc/compilers/common/time.c
,不知与我的问题是否有关系?
感谢回答, 因为对 RT-Thread 还不够熟悉,所以没办法确定是自己步骤有问题还是其他问题。如果确实步骤没问题,我就可以考虑给软件包提下 PR,然后向 RT-Thread 反馈下问题。
@Hackbits
我认为是源码的问题,从4.0.4版本的内核开始就有这个问题了
这个不是源码问题,这个是正确行为,只不过升级后和不兼容之前的代码。https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/libc/iso-ansi-c?id=_5-%e6%97%b6%e9%97%b4%e5%87%bd%e6%95%b0 @crystal266
@mysterywolf
明白了。感谢感谢
@mysterywolf
@crystal266上面提到这个问题从 RT-Thread 4.0.4 就开始出现,整理代码格式&修复4.1.0版本以上编译错误的问题这个 PR 是判断 4.1.0 才开始出现,是不是应该判断从更早版本开始啊?
@Hackbits
我现在用的是 4.0.4 版本的内核,每次在配置和使用片内 RTC 的驱动的时候都会报下面的错误,手动解决该问题的办法是每次在文件 drivers/drv_rtc.c 中包含头文件
#include <sys/time.h>