如何使用OpenModelica生成静态链接可执行文件?
在Linux下通过OpenModelica生成静态链接可执行文件的解决方案
1. 确认OpenModelica版本兼容性
请使用1.18.0及以上的稳定版本,旧版本的静态链接支持存在已知bug,升级后能规避多数兼容性问题。
2. 正确设置环境变量
之前设置OMC_LDFLAGS_LINK_TYPE未生效,通常是因为设置时机错误。需在启动omc前就导出该环境变量:
export OMC_LDFLAGS_LINK_TYPE=static
随后再执行你的.mos脚本:
omc your_script.mos
3. 在simulate函数中显式指定链接参数
在你的.mos脚本里,调用simulate时直接传入编译和链接的静态参数,强制覆盖默认配置:
simulate( YourModelName, compilerFlags="-static", linkFlags="-static" );
若遇到gfortran相关的链接错误,可将linkFlags调整为"-static -static-libgfortran -static-libgcc",强制链接静态版本的gcc和fortran依赖库。
4. 安装系统静态依赖库
静态链接需要系统提供对应库的静态版本,以Debian/Ubuntu为例:
sudo apt update && sudo apt install build-essential libc6-dev libgfortran-static
CentOS/RHEL等发行版可安装glibc-static、libgfortran-static包。
5. 验证静态链接结果
生成可执行文件后,用ldd命令检查链接状态:
ldd your_model_executable
若输出not a dynamic executable,或无任何动态库路径列表,说明静态链接成功。
注意事项
- 部分OpenModelica内置库仅提供动态版本,若模型依赖这类库,可能无法实现完全静态链接,需检查模型组件的依赖情况。
- 静态链接生成的可执行文件体积会远大于动态链接版本,属于正常现象。
内容的提问来源于stack exchange,提问作者Michael Tiller
相关产品推荐
相关产品推荐

