添加SQLite数据库后编译出错
我的环境为RT-ThreadV5.0.0,ENV工具版本为V1.3.5
我在 menuconfig 里面的 RT-Thread Components 下使能了 DFS 和 FAL。
在 RT-Thread Components → C/C++ and POSIX layer 下使能了C++组件,没有使用C11的多线程函数。
在 RT-Thread Components → C/C++ and POSIX layer → POSIX (Portable Operating System Interface) layer 下使能了第一个和第二个选项分别是 “Enable POSIX file system and I/O”,“Enable devices as file descriptors”
按教程将SQLite数据库下载完后,编译出错。研究了1个星期完全不明白该从哪里下手,麻烦个位帮帮忙。
报错信息如下:
In file included from F:\Project\rtt-yangtao-lot\rt-thread-5.0.0\components\libc\compilers\common\include/sys/time.h:18,
from F:\Project\rtt-yangtao-lot\rt-thread-5.0.0\components\libc\compilers\common\include/sys/select.h:17,
from e:\rtt-env\env-windows-v1.3.5\tools\gnu_gcc\arm_gcc\mingw\arm-none-eabi\include\sys\types.h:50,
from e:\rtt-env\env-windows-v1.3.5\tools\gnu_gcc\arm_gcc\mingw\arm-none-eabi\include\stdio.h:61,
from packages\sqlite-v3.19.3\sqlite3.c:11616:
e:\rtt-env\env-windows-v1.3.5\tools\gnu_gcc\arm_gcc\mingw\arm-none-eabi\include\time.h:56:1: error: unknown type name 'clock_t'; did you mean '_flock_t'?
56 | clock_t clock (void);
| ^~~~~~~
| _flock_t
In file included from F:\Project\rtt-yangtao-lot\rt-thread-5.0.0\components\libc\compilers\common\include/sys/select.h:17,
from e:\rtt-env\env-windows-v1.3.5\tools\gnu_gcc\arm_gcc\mingw\arm-none-eabi\include\sys\types.h:50,
from e:\rtt-env\env-windows-v1.3.5\tools\gnu_gcc\arm_gcc\mingw\arm-none-eabi\include\stdio.h:61,
from packages\sqlite-v3.19.3\sqlite3.c:11616:
F:\Project\rtt-yangtao-lot\rt-thread-5.0.0\components\libc\compilers\common\include/sys/time.h:56:5: error: unknown type name 'suseconds_t'
56 | suseconds_t tv_usec; /* and microseconds */
| ^~~~~~~~~~~
我也遇到同样的问题,想请问一下这个问题解决了么:
In file included from C:\02Study\RT-Thread\Tools\RT-ThreadStudio\workspace\stm32f429IGTx\rt-thread\components\libc\compilers\common\include/sys/time.h:18:0,
from C:\02Study\RT-Thread\Tools\RT-ThreadStudio\workspace\stm32f429IGTx\rt-thread\components\libc\compilers\common\include/sys/select.h:17,
from c:\02study\rt-thread\tools\rt-threadstudio\repo\extract\toolchain_support_packages\arm\gnu_tools_for_arm_embedded_processors\6.3.1\arm-none-eabi\include\sys\types.h:68,
from c:\02study\rt-thread\tools\rt-threadstudio\repo\extract\toolchain_support_packages\arm\gnu_tools_for_arm_embedded_processors\6.3.1\arm-none-eabi\include\stdio.h:61,
from ../packages/sqlite-v3.19.3/sqlite3.c:11616:
c:\02study\rt-thread\tools\rt-threadstudio\repo\extract\toolchain_support_packages\arm\gnu_tools_for_arm_embedded_processors\6.3.1\arm-none-eabi\include\time.h:56:1: error: unknown type name 'clock_t'
clock_t _EXFUN(clock, (void));
^~~~~~~
In file included from C:\02Study\RT-Thread\Tools\RT-ThreadStudio\workspace\stm32f429IGTx\rt-thread\components\libc\compilers\common\include/sys/select.h:17:0,
from c:\02study\rt-thread\tools\rt-threadstudio\repo\extract\toolchain_support_packages\arm\gnu_tools_for_arm_embedded_processors\6.3.1\arm-none-eabi\include\sys\types.h:68,
from c:\02study\rt-thread\tools\rt-threadstudio\repo\extract\toolchain_support_packages\arm\gnu_tools_for_arm_embedded_processors\6.3.1\arm-none-eabi\include\stdio.h:61,
from ../packages/sqlite-v3.19.3/sqlite3.c:11616:
C:\02Study\RT-Thread\Tools\RT-ThreadStudio\workspace\stm32f429IGTx\rt-thread\components\libc\compilers\common\include/sys/time.h:81:5: error: unknown type name 'suseconds_t'
suseconds_t tv_usec; /* and microseconds */
^~~~~~~~~~~
这里好像是因为工具链的问题。 RTT使用的工具链找不到这个定义,我翻代码看过能找到这几个定义,但编译时就是不行。 最后我找到最底层的类型定义,重新命名了就能通过了
这里好像是因为工具链的问题。 RTT使用的工具链找不到这个定义,我翻代码看过能找到这几个定义,但编译时就是不行。 最后我找到最底层的类型定义,重新命名了就能通过了
感谢告知!后续我更改RT-Thread内核版本为v4.1.0之后就能够成功编译了,应该跟你推测的一样是工具链的问题,我最后定位到问题,就先用v4.1.0用着了