打印
[其他ST产品]

错误未知类型名称 '_ARMABI'

[复制链接]
184|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Hitomi22|  楼主 | 2025-5-27 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将代码从 Keil 转到 CubeIDE。在编译过程中出现错误未知类型名称 '_ARMABI' 。
_ARMABI在许多头文件中都有定义,包括 Keil 环境中的 stdio.h 和 time.h,
但在 CubeIDE 中找不到它的定义位置。
这是啥情况啊?

使用特权

评论回复
沙发
公羊子丹| | 2025-5-28 07:27 | 只看该作者
感觉你可能是直接复制了 Keil 的系统头文件进 CubeIDE 里,建议还是用 CubeIDE 自带的标准 C 库。

使用特权

评论回复
板凳
周半梅| | 2025-5-28 07:28 | 只看该作者
_ARMABI 是 ARM 编译器特有的东西,GCC 根本没这个宏,得换掉相关头文件。

使用特权

评论回复
地板
帛灿灿| | 2025-5-28 07:29 | 只看该作者
你是直接搬了 Keil 的工程过来吗?Keil 用的是 ARMCC,CubeIDE 用的是 GCC,两边不兼容。

使用特权

评论回复
5
童雨竹| | 2025-5-28 07:29 | 只看该作者
我也遇到过这种情况,最后是删掉了 Keil 的头文件,改用 newlib 里的 stdio.h 和 time.h 才编过去。

使用特权

评论回复
6
万图| | 2025-5-28 07:31 | 只看该作者
要不你试试换成 <stdio.h> 和 <time.h>,不要用你项目目录下那些带宏定义的 Keil 版本头文件。

使用特权

评论回复
7
Wordsworth| | 2025-5-28 07:31 | 只看该作者
有没有试过点进去报错的那个 _ARMABI 看是在哪个头文件里引入的?看看是不是残留了老的路径。

使用特权

评论回复
8
Bblythe| | 2025-5-28 07:32 | 只看该作者
如果你之前用的是 CMSIS from Keil 的版本,可以试试从 ST 官网下 CubeIDE 用的 CMSIS 包。

使用特权

评论回复
9
Pulitzer| | 2025-5-28 07:33 | 只看该作者
我当时解决方法是从 CubeMX 新建一个空工程,把代码逐个文件迁进去,别直接导原工程。

使用特权

评论回复
10
Uriah| | 2025-5-28 07:34 | 只看该作者
可以试着把编译器设置里的 include path 清理一下,别把 Keil 的东西混进来。

使用特权

评论回复
11
Clyde011| | 2025-5-28 07:35 | 只看该作者
其实就相当于两个平台的 ABI 规范不一样,直接搬肯定报错,得做一轮头文件和库的适配。

使用特权

评论回复
12
elephant00| | 2025-5-28 16:27 | 只看该作者
头文件不兼容?

使用特权

评论回复
13
elephant00| | 2025-5-28 16:28 | 只看该作者
移除或替换_ARMABI宏为GCC兼容的宏如__GNUC__。

使用特权

评论回复
14
cr315| | 2025-5-28 20:00 | 只看该作者
更新或替换头文件为GCC工具链的标准头文件。

使用特权

评论回复
15
jcky001| | 2025-5-28 20:00 | 只看该作者
用GCC兼容的宏。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

21

帖子

0

粉丝