这篇整理手动编译安装 CMake、GCC、OpenMPI,以及用 Environment Modules 管理软件环境的方法。
CMake#
源码安装示例:
wget https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0.tar.gz
tar -zxvf cmake-3.31.0.tar.gz
cd cmake-3.31.0
mkdir build
cd build
../bootstrap --prefix=/home/apps/cmake-3.31.0
make -j 16
make install -j 16
GCC 依赖#
GCC 13/14 等新版本需要 GMP、MPFR、MPC。建议按以下顺序安装:
- GMP
- MPFR
- MPC
- GCC
GMP#
wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2
tar -vxf gmp-5.0.1.tar.bz2
cd gmp-5.0.1
./configure --prefix=/home/apps/gmp-5.0.1
make
make install
make check
MPFR#
wget https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.5.tar.xz
tar -vxf mpfr-3.1.5.tar.xz
cd mpfr-3.1.5
./configure --prefix=/home/apps/mpfr-3.1.5 --with-gmp=/home/apps/gmp-5.0.1
make
make install
MPC#
wget http://www.multiprecision.org/downloads/mpc-0.9.tar.gz
tar -vxf mpc-0.9.tar.gz
cd mpc-0.9
./configure --prefix=/home/apps/mpc-0.9 --with-gmp=/home/apps/gmp-5.0.1 --with-mpfr=/home/apps/mpfr-3.1.5
make
make install
GCC#
在 GCC 源码目录下创建 build,在 build 目录中 configure:
mkdir build
cd build
../configure \
--prefix=/software/gcc-14.2.0 \
--with-gmp=/software/gmp-6.3.0 \
--with-mpfr=/software/mpfr-4.2.1 \
--with-mpc=/software/mpc-1.3.1 \
--with-gmp-include=/software/gmp-6.3.0/include \
--with-gmp-lib=/software/gmp-6.3.0/lib \
--with-mpfr-include=/software/mpfr-4.2.1/include \
--with-mpfr-lib=/software/mpfr-4.2.1/lib \
--with-mpc-include=/software/mpc-1.3.1/include \
--with-mpc-lib=/software/mpc-1.3.1/lib
make -j 24
make install
旧路径示例:
../configure --prefix=/home/apps/gcc/11.3.0 \
--with-gmp=/home/apps/gmp-5.0.1 \
--with-mpfr=/home/apps/mpfr-3.1.5 \
--with-mpc=/home/apps/mpc-0.9 \
--with-gmp-include=/home/apps/gmp-5.0.1/include \
--with-gmp-lib=/home/apps/gmp-5.0.1/lib \
--with-mpfr-include=/home/apps/mpfr-3.1.5/include \
--with-mpfr-lib=/home/apps/mpfr-3.1.5/lib \
--with-mpc-include=/home/apps/mpc-0.9/include \
--with-mpc-lib=/home/apps/mpc-0.9/lib
OpenMPI#
下载源码:
https://www.open-mpi.org/
安装示例:
./configure --prefix=/home/apps/openmpi/5.0.5
make -j 24
make install
如果是 IB/GPU 场景,更推荐显式使用 UCX,并确认是否需要 CUDA-aware MPI。复杂依赖可以交给 Spack 管理。
Modulefile#
假设软件安装在:
/home/apps/openmpi/5.0.5
Modulefile 目录:
/home/modulefiles/openmpi/5.0.5
OpenMPI modulefile 示例:
#%Module
set version 5.0.5
set OPENMPI_HOME /home/apps/openmpi/5.0.5
prepend-path PATH "${OPENMPI_HOME}/bin"
prepend-path LD_LIBRARY_PATH "${OPENMPI_HOME}/lib"
prepend-path LIBRARY_PATH "${OPENMPI_HOME}/lib"
prepend-path CPATH "${OPENMPI_HOME}/include"
setenv MPI_HOME "${OPENMPI_HOME}"
GCC modulefile 示例:
#%Module
set version 14.1.0
set GCC_HOME /software/gcc-14.1.0
prepend-path PATH "${GCC_HOME}/bin"
prepend-path LD_LIBRARY_PATH "${GCC_HOME}/lib"
prepend-path LIBRARY_PATH "${GCC_HOME}/lib"
默认版本文件 .version:
#%Module
set ModulesVersion "5.0.5"
使用:
module avail
module load openmpi/5.0.5
module load gcc/14.1.0


