RT-Thread论坛
直播中

邹俩珍

8年用户 1113经验值
私信 关注
[问答]

rt-thread 在mdk5中使用v6编译器编译出错怎么解决?


  • 由于添加了u8g2这个组件,编译特别慢,8分钟才完成。
听说v6编译器,编译速度快很多,于是想用v6,结果,直接编译不过了。
出了很多这种错误,请问要怎么调整呀?谢谢

  • compiling cpuport.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling i2c_core.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling i2c_dev.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling i2c-bit-ops.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling pin.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling adc.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling mtd_nor.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling pm.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling rtc.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling alarm.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling serial.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling spi_core.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling spi_dev.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling spi_flash_sfud.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling sfud.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling sfud_sfdp.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling completion.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling dataqueue.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling pipe.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling ringblk_buf.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling ringbuffer.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling workqueue.c...
  • ArmClang: error: unsupported option '--c99'
  • compiling waitqueue.c...



回帖(1)

贺服窍

2025-10-10 17:34:13

在使用MDK5的Arm Compiler 6(V6)编译RT-Thread时出现 --c99 选项的错误,是因为该选项在AC6中已被弃用。以下是系统化的解决方案:


步骤 1: 更新RT-Thread源码


确保使用的RT-Thread版本已适配AC6:



  • 建议更新到RT-Thread最新版本(GitHub或gitee)。

  • 早期版本可能缺少AC6支持,更新后通常自动修复。


步骤 2: 修改编译器选项(关键步骤)


方法一:通过MDK界面修改



  1. 打开工程 Options for TargetC/C++ 选项卡。

  2. 删除--c99选项(参考位置):

    • Misc Controls 输入框中删除 --c99

    • 或在 Preprocessor Symbols 后检查是否有残留选项。


  3. 启用隐式C99支持

    • 勾选 C99 Mode (MDK会自动添加 -std=c99)。



方法二:直接修改工程文件



  1. 关闭MDK,用文本编辑器打开工程文件(.uvprojx)。

  2. 搜索 --c99 并删除所有匹配项。

  3. 搜索 0 改为 2(启用C99)。


步骤 3: 适配RT-Thread的libcpu


某些CPU移植文件需要额外修改:



  • 示例错误#error "TODO: You need to customize the fpu operations..."

  • 解决方法
    rtconfig.h 添加FPU支持宏(根据芯片替换名称)
    #define ARCH_ARM
    #define ARCH_ARM_CORTEX_M
    #define ARCH_ARM_CORTEX_M4  /* 例如M4芯片 */
    #define ARCH_ARM_FPU        /* 若芯片带FPU则启用 */


步骤 4: 验证其他兼容性问题


若仍报错,检查:



  1. 汇编文件语法:AC6要求统一使用 .s 扩展名(非 .asm),确认RT-Thread的汇编文件命名正确。

  2. 头文件路径:确保所有路径无中文或特殊字符(避免解析错误)。


步骤 5: 加速U8g2编译


即使切换到AC6,U8g2仍可能较慢:



  • 精简字体:编辑 u8g2_d_memory.c,仅保留所需字体(删减 U8G2_FONT_TABLE_ENTRY)。

  • 禁用不必要驱动:在 rtconfig.h 添加:
    #define U8G2_USE_HW_I2C      /* 仅用硬件I2C */
    #define U8G2_USE_LARGE_FONTS /* 只启用大字体(按需) */


验证结果



  1. 重新生成MDK工程(若使用scons,则执行 scons --target=mdk5)。

  2. 在MDK中编译,AC6通常可提速50%以上(尤其对多文件项目)。



关键提示:若更新RT-Thread后问题仍存,请手动检查所有编译选项中的 --c99 残留(重点关注文件组级别的设置)。AC6的错误提示比AC5更严格,处理后续警告时可暂时屏蔽非关键警告以聚焦错误。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分