2016-12-19 114 views
0

我在Linux(CentOS)機器上安裝了兩個GCC編譯器。 GCC(4.4.7)的舊版本位於默認文件夾(隨CentOS附帶)中,而我打算使用的較新版本位於/usr/local/gcc/4.9.3/。我的代碼利用MPI和LAPACK/LAPACKE/BLAS庫以及我用來編譯源代碼的舊GCC(例如「main.cpp」),如下所示:如何更改默認的GCC編譯器以便在Linux上使用MPI CentOS

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編譯器給你,但如果你既要覆蓋默認或需要要指定一個配置不識別的編譯器,可以在命令行中指定它們[...]。例如,要選擇英特爾編譯器而不是兩個系統上的GNU編譯器,請使用「

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

有沒有辦法在的不同版本的GCC編譯器之間進行區分?

+0

爲什麼你有2個版本的gcc安裝?您可以只更新操作系統附帶的舊版本。 –

+0

原因是CentOS對GCC 4.4.7有很多依賴。 (完全是這個版本),不能用新版本替換GCC,但必須在新版本的一側安裝。爲什麼是這樣,我不知道。另一方面,4.4.7不適用於我,我有代碼編譯/使用更高版本。 – Boki

回答

1

如果你真的想安裝在同一時間GCC的兩個版本,並在這裏使用他們兩個是一個很好的鏈接,解釋如何做到這一點:

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

+1

是的,但他指出瞭如何使當前的MPI與新的GCC兼容。這是不可能的。基本的C AI不會改變(很多),但是對於其他的GCC語言來說。實際上,請注意OP *已經安裝了兩個GCC版本。 –

3

我猜mpiCC使用第一gcc編譯器在$PATH變量中找到。

您應該能夠通過運行到設定的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 
+2

是的,但可能會出現不兼容的情況。至少在GCC的C++和Fortran部分及其MPI綁定中(儘管MPI已被棄用)。 –

+0

'PATH =「/ usr/local/gcc/4.9.3/el6/bin:$ PATH」'給我找不到命令。 – Boki

+0

@Boki怪異的,這是一個任務,而不是一個命令。 – piarston

-1

終於找到了如何。這裏是食譜:

1)檢查你的,如果你shell是bash,如果不將其設置爲來砸:$回聲$ SHELL

/斌/ tcsh的

這是tcsh中,需要進行設置打擊。

2)切換到bash中:$慶典

的bash-4.1 $

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

的bash-4.1 $出口PATH =/USR /本地/ GCC/4.9.3/EL6 /斌:$ PATH

4)檢查PATH:bash的4.1 $回聲$ PATH

/usr/local/gcc/4.9.3/el6/ bin:/usr/lib64/qt-3.3/bin:/ usr/local/bin:/ bin:/ usr/bin 012 5)使用GCC的檢查版本(它從PATH中拾取第一個GCC): bash-4。1個$的gcc --version

海合會(GCC)4.9.3

注意:這僅僅是對當前會話。

相關問題