Ubuntu22.04下pip安装job_stream报错gcc退出码1的解决求助
解决Ubuntu 22.04下job_stream安装失败(MPI_Errhandler_set未声明)的问题
问题根源
报错提示MPI_Errhandler_set未声明,本质是编译时无法找到MPI头文件/库定义,且conda环境编译器配置不匹配,导致系统gcc被优先调用,无法正确关联conda安装的boost-mpi依赖。
分步解决方案
1. 安装系统级MPI开发库
Ubuntu 22.04默认提供OpenMPI,先安装其开发包以确保编译时能获取MPI基础定义:
sudo apt update && sudo apt install -y libopenmpi-dev openmpi-bin
2. 配置conda环境内的编译器
默认conda频道无适配gcc包,需使用conda-forge频道安装环境专属编译器:
# 激活你的虚拟环境 conda activate your_env_name # 安装conda-forge的gcc/g++ conda install -c conda-forge gcc_linux-64 gxx_linux-64
安装后确认conda编译器被优先调用:
which gcc # 输出应为conda环境路径下的gcc,例如 ~/miniconda3/envs/your_env_name/bin/gcc
3. 重新安装兼容版boost-mpi
确保boost-mpi与当前MPI版本匹配,先卸载旧版再重装:
conda remove -y boost boost-mpi conda install -c conda-forge boost-mpi
4. 指定编译环境变量并安装job_stream
激活环境后设置变量,让pip使用conda编译器和依赖路径:
export CC=$CONDA_PREFIX/bin/gcc export CXX=$CONDA_PREFIX/bin/g++ export CPLUS_INCLUDE_PATH="$CONDA_PREFIX/include:/usr/include/openmpi" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:/usr/lib/x86_64-linux-gnu/openmpi/lib" # 执行pip安装 pip install job_stream
备选方案:源码编译job_stream
若上述方法无效,可手动克隆源码并指定依赖路径编译:
git clone https://github.com/wwoods/job_stream.git cd job_stream python setup.py install --boost-dir=$CONDA_PREFIX --mpi-dir=/usr/lib/x86_64-linux-gnu/openmpi
内容的提问来源于stack exchange,提问作者Mohammad Taha
相关产品推荐
相关产品推荐

