【问题标题】:How to change default GCC compiler to be used with MPI on Linux CentOS如何更改默认 GCC 编译器以在 Linux CentOS 上与 MPI 一起使用
【发布时间】:2017-05-04 22:49:28
【问题描述】:

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

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 编译器,但如果您想要覆盖默认值或需要指定 configure 无法识别的编译器,您可以在命令行 [...]。例如,要在同时使用英特尔编译器而不是 GNU 编译器的系统上选择两者,请使用“

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

有没有办法区分 ./configure 中不同版本的 GCC 编译器?

【问题讨论】:

  • 为什么你安装了 2 个版本的 gcc?您可以只更新操作系统附带的旧版本。
  • 原因是CentOS对GCC 4.4.7有很多依赖。 (确切地说是那个版本)并且不能只用较新的替换 GCC,还必须在新的一侧安装。为什么会这样,我不知道。另一方面,4.4.7 对我不起作用,我有代码编译/使用更高版本。

标签: c++ linux gcc mpi lapack


【解决方案1】:

终于找到方法了。这是食谱:

1) 检查你的 shell 是否是 bash,如果没有设置为 bash:$ echo $SHELL

/bin/tcsh

它是 tcsh,需要设置为 bash。

2) 切换到 bash:$ bash

bash-4.1$

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

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 版本(它从 PATH 中选择第一个 GCC): bash-4.1$ gcc --version

gcc (GCC) 4.9.3

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

【讨论】:

    【解决方案2】:

    我猜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
    

    【讨论】:

    • 可以,但可能会出现不兼容问题。至少在 GCC 的 C++ 和 Fortran 部分及其 MPI 绑定中(尽管 MPI 已被弃用)。
    • PATH="/usr/local/gcc/4.9.3/el6/bin:$PATH" 给我找不到命令。
    【解决方案3】:

    如果您真的想要同时安装两个版本的 GCC 并同时使用它们,这里有一个很好的链接来说明如何执行此操作:

    http://gcc.gnu.org/faq.html#multiple

    【讨论】:

    • 嗯,是的,但重点是如何使当前的 MPI 与新的 GCC 兼容。这是不可能的。基本的 C AI 没有改变(很多),但对于其他 GCC 语言它会改变。实际上,请注意 OP已经安装了两个版本的 GCC。
    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2011-02-26
    • 2013-01-24
    • 2013-12-04
    • 2012-07-03
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多