在使用 mvapich2 和 gcc 8.3 编译软件时出现了 cannot find ‘ld’ 的错误,经过排查发现是系统库里的 binutils 软件包版本太低,所以只能重新安装个高版本的 binutils
下载安装 binutils-2.31
$ wget https://ftp.gnu.org/gnu/binutils/binutils-2.31.tar.gz
$ tar zxf binutils-2.31.tar.gz
# 使用 gcc -v 查看下 gcc 的安装配置,我的配置如下
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/sw-cluster/apps/soft/gcc/8.3/libexec/gcc/x86_64-pc-linux-gnu/8.3.0/lto-wrapper
目标:x86_64-pc-linux-gnu
配置为:./configure --prefix=/usr/soft/gcc/8.3/ --enable-threads=posix --enable-languages=c,c++,fortran --disable-checking --disable-multilib --disable-multilib --disable-libcc1 --with-gmp=/usr/soft/gcc/7.3/3rdlib/gmp-6.1.0 --with-mpfr=/usr/soft/gcc/7.3/3rdlib/mpfr-3.1.4 --with-mpc=/usr/soft/gcc/7.3/3rdlib/mpc-1.0.3/
线程模型:posix
gcc 版本 8.3.0 (GCC)
# 这里只需要指定安装路径即可,后面直接复制 gcc 的配置就可以了
$ ./configure --prefix=./install --enable-threads=posix --enable-languages=c,c++,fortran --disable-checking --disable-multilib --disable-multilib --disable-libcc1 --with-gmp=/usr/soft/gcc/7.3/3rdlib/gmp-6.1.0 --with-mpfr=/usr/soft/gcc/7.3/3rdlib/mpfr-3.1.4 --with-mpc=/usr/soft/gcc/7.3/3rdlib/mpc-1.0.3/
$ make && make install
安装完成后加到 PATH 和 LD_LIBRARY_PATH 就可以使用了
export PATH=/path/to/binutils-2.31/install/bin:$PATH
export LD_LIBRARY_PATH=/path/to/binutils-2.31/install/lib:$LD_LIBRARY_PATH
现在再使用 gcc 或者 mpicc 就不会报错了