ArmClang: error: unsupported option ‘--locale=english‘

在将AC5工程移植为AC6工程时,报错:ArmClang: error: unsupported option '--locale=english'

查看options->C/C++->Misc Controls内,没有相关设置

之前使用的MDK版本是5.35,现在升级到了5.38,错误仍然存在:

于是,通过以下操作1,定位到出问题的地方

  1. 检查工程的其他配置文件,如工程文件(.uvprojx)或者链接器脚本文件(.ld),查找是否存在该参数的设置。

  2. 在AC6中重新创建一个新的工程,然后将你的源码和资源文件导入到新工程中,确保不带有错误的参数设置。

  3. 如果你使用了版本控制工具(如Git),可以回退到移植之前的版本,然后重新进行移植。

  4. 如果以上方法都无法解决问题,你可以尝试使用其他编译器版本或者升级AC6到最新版本,以确保编译器的兼容性。

通过notepad++文本编辑器打开工程文件(.uvprojx),搜索'locale=english'字段:

如上图,将该内容去掉,报错内容消失,该问题得以解决;

### Keil 编译 STM32 项目时 ArmClang 报错 'unknown argument: --c99' 的解决方案 当使用 Keil 编译 RT-Thread 或其他基于 ARM Cortex-M 架构的 STM32 项目时,可能会遇到 `armclang` 编译器报告 `'unknown argument: --c99'` 错误。此问题通常发生在较新的编译工具链版本中,因为这些新版本不再支持某些旧版选项。 #### 原因分析 该错误的原因在于使用的编译命令中含有 `--c99` 参数,而当前版本的 `armclang` 不再识别这个参数[^1]。具体来说,在一些早期版本的 MDK 中,默认配置文件可能包含了这一过时的编译标志。 #### 解决方法 为了消除上述错误并成功完成编译过程,建议采取以下措施: 移除或禁用 C99 标准指定符: 可以在项目的设置里找到编译选项,并从中删除任何有关 `-std=c99` 或者类似的标记。对于大多数现代嵌入式应用而言,默认的标准已经足够满足需求[^2]。 调整 IDE 设置以适应最新标准: 如果确实需要遵循特定的语言标准,则应更新为更近的标准版本(例如 C11),这可以通过修改编译器属性来实现。进入 **Project -> Options for Target... -> C/C++** 页面,取消勾选 “Use default compiler settings”,然后手动设定合适的语言级别。 验证第三方库兼容性: 确保所依赖的所有外部库都与选定的新标准相容。特别是像 HAL 库这样的官方资源包通常是经过良好测试和支持多种标准环境下的工作的;但对于自定义组件则需额外注意其文档说明中的要求[^4]。 ```cpp // 示例:检查和适配代码风格至更高版本C++ #include <stdint.h> void exampleFunction(void){ uint8_t data = 0; } ``` 通过以上操作应该能够有效解决由 `--c99` 引起的编译失败问题。值得注意的是,随着软件不断迭代发展,保持开发工具和技术栈处于最新状态有助于避免此类历史遗留问题的发生。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值