OpenMPI 4.1.4在M1 Mac(arm64架构)编译报错的解决求助
M1 MacBook Pro(arm64)下OpenMPI编译链接错误解决方法
你遇到的Undefined symbols for architecture arm64链接错误,本质是编译过程中没有正确关联OpenMPI的arm64架构库,或编译器调用方式不对。以下是针对性解决步骤:
1. 用mpicxx编译C++代码
你的代码包含C头文件(如<iostream>),mpicc是OpenMPI针对C语言的编译器包装器,直接用它编译C代码会缺失C++ MPI库的链接。改用mpicxx编译:
mpicxx your_code.cpp -o mpi_hello
2. 确认OpenMPI为arm64架构版本
- 若用brew安装,先检查brew架构:
输出brew --prefix/opt/homebrew说明是arm64版本brew;若输出/usr/local则是x86_64版本,需卸载后重装arm64 brew,再重装OpenMPI:brew install openmpi - 手动编译安装的话,需指定arm64架构配置:
./configure --prefix=/your/install/dir --build=aarch64-apple-darwin make && make install # 将安装目录的bin加入环境变量 export PATH=/your/install/dir/bin:$PATH
3. 验证编译链接参数
用-v参数查看编译过程的详细命令,确认是否包含OpenMPI库的链接:
mpicxx -v your_code.cpp -o mpi_hello
输出中应包含类似-L/opt/homebrew/lib -lmpi_cxx -lmpi的链接参数,确保库路径指向arm64架构的OpenMPI库。
4. 测试运行
编译成功后,用以下命令测试多进程运行:
mpiexec -n 4 ./mpi_hello
正常情况下会输出4条包含不同rank的Hello信息。
内容的提问来源于stack exchange,提问作者goldenburrito
相关产品推荐
相关产品推荐

