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

Simulink Embedded Coder生成代码ARM64架构编译报错

问题根源

你只编译了入口文件ert_main.c,但Simulink生成的模型核心实现文件(包含_CodeGenerationMontags_M、CodeGenerationMontags_initialize等符号定义)没有被加入编译链接流程,导致链接器找不到这些符号。

解决步骤

1. 确认生成的核心代码文件

打开CodeGenerationMontags_ert_rtw/目录,你会看到以下关键文件(名字和你的模型名对应):

  • CodeGenerationMontags.c:包含CodeGenerationMontags_initialize、CodeGenerationMontags_step、CodeGenerationMontags_terminate的函数实现
  • CodeGenerationMontags_data.c:包含全局变量CodeGenerationMontags_M的定义
  • 可能还有辅助文件:rt_nonfinite.c、rtGetInf.c、rtGetNaN.c等

2. 修改编译命令,包含所有源文件

把所有相关的.c文件都加入gcc命令,示例:

cd "/path/CodeGenerationMontags_ert_rtw/" && gcc ert_main.c CodeGenerationMontags.c CodeGenerationMontags_data.c rt_nonfinite.c -o ert_main && "./ert_main"

注意:根据你实际生成的文件列表调整,确保没有遗漏任何.c文件。

3. 更省心的方法:用自动生成的Makefile编译

Embedded Coder会自动生成ert_rtw.mk或Makefile,直接在终端进入代码目录执行:

cd "/path/CodeGenerationMontags_ert_rtw/" && make

这个命令会自动处理所有依赖、编译选项和链接流程,完全避免手动写命令的遗漏问题。

4. 配置VS Code编译任务(如果用VS Code编译)

修改.vscode/tasks.json,把所有源文件加入编译参数:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build Simulink Generated Code",
            "type": "shell",
            "command": "gcc",
            "args": [
                "ert_main.c",
                "CodeGenerationMontags.c",
                "CodeGenerationMontags_data.c",
                "rt_nonfinite.c",
                "-o",
                "ert_main"
            ],
            "options": {
                "cwd": "/path/CodeGenerationMontags_ert_rtw/"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}

额外注意事项

  • Mac M2的ARM64架构下,gcc实际是clang的别名,无需额外添加架构编译参数,系统会自动适配。
  • 如果执行make时提示找不到命令,安装Xcode Command Line Tools即可:xcode-select --install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:34:49