C++ 如何在Linux CentOS上将默认GCC编译器更改为与MPI一起使用

C++ 如何在Linux CentOS上将默认GCC编译器更改为与MPI一起使用,c++,linux,gcc,mpi,lapack,C++,Linux,Gcc,Mpi,Lapack,我在Linux(CentOS)机器上安装了两个GCC编译器。GCC的旧版本(4.4.7)位于默认文件夹中(CentOS附带),我打算使用的新版本位于/usr/local/GCC/4.9.3/。我的代码利用MPI和LAPACK/LAPACKE/BLAS库,并使用我用来编译源代码(例如“main.cpp”)的旧GCC,如下所示: mpiCC main.cpp-o main-L/home/USER1/lapack-3.6.1-llapacke-llapack-lblas-lm-Wall 这仍然调用旧的

我在Linux(CentOS)机器上安装了两个GCC编译器。GCC的旧版本(4.4.7)位于默认文件夹中(CentOS附带),我打算使用的新版本位于/usr/local/GCC/4.9.3/。我的代码利用MPI和LAPACK/LAPACKE/BLAS库,并使用我用来编译源代码(例如“main.cpp”)的旧GCC,如下所示:

mpiCC main.cpp-o main-L/home/USER1/lapack-3.6.1-llapacke-llapack-lblas-lm-Wall

这仍然调用旧的GCC 4.4.7。我应该修改什么,以便上面的MPI编译(mpiCC)从/usr/local/GCC/4.9.3/el6/bin/的新位置调用GCC 4.9.3可执行文件

来自MPICH安装程序指南3.2版(第6页):

MPICH配置步骤将尝试为您找到C、C++和FORTRAN编译器,但是如果您想重写默认值,或者需要指定配置不识别的编译器,则可以在命令行上指定它们…。例如,要在同时使用这两种编译器的系统上选择Intel编译器而不是GNU编译器,请使用“

/configure CC=icc CXX=icpc F77=ifort FC=ifort…


/configure
中,是否有方法区分不同版本的GCC编译器

如果您真的希望同时安装两个版本的GCC并同时使用这两个版本,这里有一个很好的链接,说明了如何做到这一点:


如果您真的希望同时安装两个版本的GCC并同时使用这两个版本,这里有一个很好的链接,说明如何做到这一点:


我猜
mpiCC
使用了在
$PATH
变量中找到的第一个
gcc
编译器

您应该能够通过运行以下命令来设置gcc的新版本:

PATH="/usr/local/gcc/4.9.3/el6/bin:$PATH" mpiCC main.cpp -o main -L/home/USER1/lapack-3.6.1 -llapacke -llapack -lblas -lm –Wall

我猜
mpiCC
使用了在
$PATH
变量中找到的第一个
gcc
编译器

您应该能够通过运行以下命令来设置gcc的新版本:

PATH="/usr/local/gcc/4.9.3/el6/bin:$PATH" mpiCC main.cpp -o main -L/home/USER1/lapack-3.6.1 -llapacke -llapack -lblas -lm –Wall

终于发现了。以下是菜谱:

1) 检查shell是否为bash,如果未设置为bash:$echo$shell

/垃圾箱/垃圾箱

它是tcsh,需要设置为bash

2) 切换到bash:$bash

bash-4.1$

3) 将新版本的GCC添加到路径的前面:

bash-4.1$export PATH=/usr/local/gcc/4.9.3/el6/bin:$PATH

4) 检查路径:bash-4.1$echo$PATH

/usr/local/gcc/4.9.3/el6/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin

5) 检查使用的GCC版本(它从路径中拾取第一个GCC): bash-4.1$gcc——版本

通用条款(gcc)4.9.3


注意:这只是针对当前会话。

终于找到了方法。以下是菜谱:

1) 检查shell是否为bash,如果未设置为bash:$echo$shell

/垃圾箱/垃圾箱

它是tcsh,需要设置为bash

2) 切换到bash:$bash

bash-4.1$

3) 将新版本的GCC添加到路径的前面:

bash-4.1$export PATH=/usr/local/gcc/4.9.3/el6/bin:$PATH

4) 检查路径:bash-4.1$echo$PATH

/usr/local/gcc/4.9.3/el6/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin

5) 检查使用的GCC版本(它从路径中拾取第一个GCC): bash-4.1$gcc——版本

通用条款(gcc)4.9.3


注意:这仅适用于当前会话。

您为什么安装了2个版本的gcc?您可以只更新操作系统附带的旧版本。原因是CentOS对GCC4.4.7有很多依赖性。(确切地说是那个版本)而且人们不能仅仅用较新的GCC替换GCC,还必须安装新的GCC。为什么会这样,我不知道。另一方面,4.4.7不适用于我,我有更高版本的代码编译/使用。你为什么要安装两个版本的gcc?您可以只更新操作系统附带的旧版本。原因是CentOS对GCC4.4.7有很多依赖性。(确切地说是那个版本)而且人们不能仅仅用较新的GCC替换GCC,还必须安装新的GCC。为什么会这样,我不知道。另一方面,4.4.7不适用于我,我有更高版本的代码编译/工作。是的,但重点是如何使当前的MPI与新的GCC兼容。这是不可能的。基本的C AI没有太大的变化,但对于其他GCC语言来说确实如此。事实上,请注意OP已经安装了两个版本的GCC。是的,但重点是如何使当前的MPI与新的GCC兼容。这是不可能的。基本的C AI没有太大的变化,但对于其他GCC语言来说确实如此。实际上,请注意OP已经安装了两个版本的GCC。是的,但是可能会出现不兼容。至少在C++和FORTRAN部分的GCC和MPI绑定(虽然MPI的一些被禁止)。<代码>路径=“/Urr/Posi/Gcc/4.93/EL6/bin:$PATH”<代码>给了我找不到的命令。是的,但是可能出现不兼容性。至少在C++和FORTRAN部分的GCC和MPI绑定(尽管MPI被禁止)。<代码>路径=“/Urr/Posi/Gcc/4.93/EL6/bin:$PATH”<代码>,这给了我找不到的命令。