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

Linux下OpenModelica单独编译HelloWorld.om失败的原因

OpenModelica单独编译失败但脚本运行成功的原因

问题场景

  • 环境:Linux
  • HelloWorld.om文件内容:
class Main
  Real x(start = 1, fixed = true);
  parameter Real a = 1;
equation
  der(x) = -a*x;
end Main;
  • 操作差异:
    • 执行命令 omc --simulationCg HelloWorld.om 时,返回错误并以退出码1终止,无法生成可执行文件
    • 执行包含以下内容的runHelloWorld.mos脚本(命令:omc runHelloWorld.mos)时,成功生成可执行文件并完成仿真:
loadFile("HelloWorld.om"); simulate(Main, stopTime=2); plot(x);

原因分析

核心差异在于两个操作的执行流程完全不同:

  • --simulationCg参数的作用只是生成仿真所需的C代码,它不会自动调用系统的C编译器(如gcc)完成后续的编译、链接步骤。执行这个命令后,你只会在当前目录得到一个包含C源码的Main文件夹,但没有可执行文件,命令因未完成最终编译环节返回错误码1。
  • simulate()函数是OpenModelica提供的完整仿真流程命令,它会依次执行:加载模型文件、生成仿真C代码、调用C编译器编译链接生成可执行文件、运行仿真这一系列完整步骤,因此能得到可执行文件并完成仿真。

验证方式

执行omc --simulationCg HelloWorld.om后,查看当前目录下的Main文件夹,里面会有Main.c、Main.h等源码文件,但没有Main可执行文件;而通过脚本运行后,该文件夹内会同时存在源码和编译好的可执行文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:26:07