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

在OpenSUSE中集成Drake时遇mpi.h找不到的编译错误求助

问题解决:OpenSUSE Leap 15.4编译Drake时mpi.h找不到错误

核心问题

编译Drake执行make install时,触发IpMumpsSolverInterface.cpp:28:10: fatal error: mpi.h: No such file or directory错误,但已安装openmpi-devel且MPI示例代码可正常运行。

排查与解决方案

1. 强制指定MPI编译器路径给CMake

虽然你已配置MPI环境变量,但Drake的CMake构建可能未自动识别系统MPI路径。在Drake源码目录下重新执行CMake时,显式指定MPI编译器:

cmake -S . -B build -DMPI_C_COMPILER=/usr/lib64/mpi/gcc/openmpi/bin/mpicc -DMPI_CXX_COMPILER=/usr/lib64/mpi/gcc/openmpi/bin/mpicxx

完成配置后再执行make install。

2. 补全MUMPS相关MPI依赖包

OpenSUSE Leap 15.4中,仅安装openmpi-devel不足以支持Drake的MUMPS接口,需额外安装MUMPS的MPI开发包:

zypper install mumps-openmpi-devel mumps-openmpi

这些包会提供MUMPS与OpenMPI集成所需的头文件和库,确保编译时能找到mpi.h。

3. 验证CMake缓存中的MPI配置

查看Drake构建目录下的CMakeCache.txt,确认以下配置项是否正确:

  • MPI_FOUND:BOOL=ON
  • MPI_C_INCLUDE_DIRS指向/usr/lib64/mpi/gcc/openmpi/include
  • MPI_CXX_INCLUDE_DIRS指向相同路径
    若配置错误,手动修改后重新编译。

Drake对MPI及MUMPS的版本约束

  • MPI:要求版本≥3.1,OpenSUSE Leap 15.4自带的OpenMPI(4.0.5版本)满足要求。
  • MUMPS:兼容5.2及以上版本,OpenSUSE Leap 15.4中的MUMPS包(5.3.5版本)符合要求。
  • Ipopt:依赖的Ipopt版本需支持MUMPS接口,OpenSUSE默认提供的ipopt-devel包已集成该支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:12:09