You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IAR EW for ARM中解决__iar_data_init3缺失引发的.bss初始化链接错误

修复IAR EW for ARM中__iar_data_init3链接错误的方法

这个错误是因为项目里存在需要初始化的.bss段(对应C代码中的全局未初始化变量),但链接时找不到IAR提供的初始化函数__iar_data_init3,可以通过以下步骤修复:

  • 添加对应内核的启动文件
    汇编项目默认不会包含C运行时的启动代码,需要手动添加适配你目标ARM内核的启动汇编文件(比如startup_stm32f4xx.s这类,具体文件名依芯片型号而定)。操作路径:右键项目 → Add → Add Files,在IAR安装目录的arm\src\lib\startup或芯片厂商提供的SDK文件夹中找到对应文件添加。

  • 确保链接默认C运行时库
    打开项目选项:Project → Options → Linker → Libraries,勾选Include default libraries,让链接器自动引入libc.a、libcore.a等必要的C运行时库,这些库包含__iar_data_init3的实现。

  • 手动在汇编入口调用初始化函数
    如果不需要完整的启动文件,可以在汇编入口代码中手动调用初始化函数,示例如下:

    EXTERN __iar_data_init3
    EXTERN main
    
    PUBLIC _start
    _start:
        BL __iar_data_init3  ; 初始化.bss段
        BL main              ; 跳转到C代码的主函数
        B .                  ; 死循环防止程序退出
    
  • 检查数据段初始化配置
    打开Project → Options → Linker → Config,确认Initialize data sections选项处于开启状态,该选项控制链接器是否生成数据段初始化的相关调用逻辑。

内容的提问来源于stack exchange,提问作者d7d1cd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:01:03