2011-12-02 15 views
39

我安裝了gcc 4.6。來自macports(支持C++ 0x)。但是當我檢查'gcc --version`時,它顯示的是舊版本。如何使用macports安裝的新gcc?如何使用安裝在macports中的gcc?

+0

可能的[OSX上的更新GCC]重複(http://stackoverflow.com/questions/837992/update-gcc-on-osx) – birryree

+0

另請參閱[使用正確的編譯器](https://trac.macports .org/wiki/UsingTheRightCompiler)在MacPorts wiki上。 – jww

回答

7

我記得它就像g++-mp-4.6。我相信這足以將環境變量CXX設置爲該值。

+2

工作。有沒有一種方法來默認使用它,以便我不必更改所有make文件。 – Nemo

+1

將它粘貼到'.bashrc'中? –

+4

爲什麼這被接受爲最佳答案,而雷姆的答案是正確的? –

2

只要確定macports的路徑在您的$PATH第一。或使用gcc-mp-4.6或類似的東西。

+0

或者刪除舊的:P – jli

+3

@jli,'/ usr/bin'中的那個?聽起來不是一個好主意:) –

+0

@ MichaelKrelin-hacker你仍然需要設置上面所述的活動gcc。 – Chris

92

您可以使用port select來控制/opt/local/bin/gcc中的符號鏈接。您可以使用port select --list gcc查看可用版本。以mp-作爲前綴列出的任何內容均指MacPorts自己的端口,gcc42和llvm-gcc42指Apple提供的Xcode編譯器。從我的系統

例子:

$ port select --list gcc 
Available versions for gcc: 
    gcc42 
    llvm-gcc42 
    mp-gcc45 
    none (active) 
$ sudo port select --set gcc mp-gcc45 
Password: 
Selecting 'mp-gcc45' for 'gcc' succeeded. 'mp-gcc45' is now active. 

之後,無論是打開一個新的終端窗口或問題hash -r使bash的認識的變化。

+0

我這樣做了,當我輸入'port select --list gcc'時,它說mp-gcc47是活動的。然而,當我做'gcc --version'時,它仍然說它使用的是版本4.2 ...我嘗試打開一個新的終端並輸入'hash -r'。任何想法爲什麼? – FrancesKR

+0

檢查您的PATH,也許在/ opt/local/bin之前有一些其他gcc(或符號鏈接)。也可以是shell中的一些別名或函數。嘗試'輸入-a gcc'來查看bash用於查找的內容。 – raimue

+0

當我輸入'-a gcc'時,我得到兩行:「gcc是/ usr/bin/gcc gcc是/ opt/local/bin/gcc」。當我打印我的PATH時,我得到「。:/ opt/local/var/macports:/ usr/local/bin:/ sw/bin:/ usr/bin:/ bin:/ usr/sbin:/ sbin:/ usr /本地/ hallamsoft中:/ opt/local/bin目錄:在/ usr /本地/ git的/ bin中:在/ usr/texbin:在/ usr/X11/bin」中。對不起,我不完全確定這些是什麼意思,但我確實把Macports放在了我的路上。 – FrancesKR