[其他ST产品] 错误未知类型名称 '_ARMABI'

[复制链接]
534|18
 楼主| 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,两边不兼容。
童雨竹 发表于 2025-5-28 07:29 | 显示全部楼层
我也遇到过这种情况,最后是删掉了 Keil 的头文件,改用 newlib 里的 stdio.h 和 time.h 才编过去。
万图 发表于 2025-5-28 07:31 | 显示全部楼层
要不你试试换成 <stdio.h> 和 <time.h>,不要用你项目目录下那些带宏定义的 Keil 版本头文件。
Wordsworth 发表于 2025-5-28 07:31 | 显示全部楼层
有没有试过点进去报错的那个 _ARMABI 看是在哪个头文件里引入的?看看是不是残留了老的路径。
Bblythe 发表于 2025-5-28 07:32 | 显示全部楼层
如果你之前用的是 CMSIS from Keil 的版本,可以试试从 ST 官网下 CubeIDE 用的 CMSIS 包。
Pulitzer 发表于 2025-5-28 07:33 | 显示全部楼层
我当时解决方法是从 CubeMX 新建一个空工程,把代码逐个文件迁进去,别直接导原工程。
Uriah 发表于 2025-5-28 07:34 | 显示全部楼层
可以试着把编译器设置里的 include path 清理一下,别把 Keil 的东西混进来。
Clyde011 发表于 2025-5-28 07:35 | 显示全部楼层
其实就相当于两个平台的 ABI 规范不一样,直接搬肯定报错,得做一轮头文件和库的适配。
elephant00 发表于 2025-5-28 16:27 | 显示全部楼层
头文件不兼容?
elephant00 发表于 2025-5-28 16:28 | 显示全部楼层
移除或替换_ARMABI宏为GCC兼容的宏如__GNUC__。
jcky001 发表于 2025-5-28 20:00 | 显示全部楼层
用GCC兼容的宏。
cr315 发表于 2025-5-28 20:00 | 显示全部楼层
更新或替换头文件为GCC工具链的标准头文件。
烟雨蒙蒙520 发表于 2025-5-31 23:07 | 显示全部楼层
因为你引用了 ARMCC 专有的头文件或库,而这些在 GCC 环境下不存在或结构不同。
烟雨蒙蒙520 发表于 2025-5-31 23:15 | 显示全部楼层
使用 newlib 中的标准 C 库(CubeIDE 默认用的是 newlib)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

59

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部