2011-09-07 108 views
4

對於這種開發很新穎。想知道是否有人能指出我正確的方向。據我可以看到,使用MacPorts有一個錯誤,它不起作用。但是,我正在閱讀,看到這個:http://beardedcodewarrior.net/2011/07/25/building-gcc-4-6-1-on-mac-os-x-lion/但仍然無法使其工作。當我執行gcc make時,花了3個多小時才完成,然後一旦我執行sudo make install,它成功完成了,但是當我嘗試gcc --version時,它仍然說gcc版本4.2.1(基於Apple Inc. build 5658)(LLVM build 2335.15.00)。我需要4.6.1版本!Mac OS X Lion上的GNU GCC 4.6(.1)編譯器

+1

哪位gcc?我不認爲你已經使用了你編譯的gcc。嘗試指定完整路徑。 –

+1

Dyno Fu可能是對的。做一個'哪個gcc'來看你實際使用哪一個。 –

+0

您是否已將GCC配置爲在自定義位置安裝?覆蓋系統的GCC通常是一個壞主意(顯然你沒有)。如果您已將其配置爲使用自定義安裝位置,請查看該位置(例如/ opt/bin或/ usr/local/bin)是否包含'gcc'。 – 2011-09-07 05:08:15

回答

3

有三種可能的可能性:

  1. 是否正確安裝並進入目錄早些時候在你的$PATH比你以前的GCC安裝,但bash的內部哈希表條目仍指向舊GCC。
  2. 它安裝正確,但是在您以前的$PATH之後進入了一個目錄,而不是以前的GCC安裝。
  3. 正確安裝,但可執行文件未命名爲gcc

如果#1,只需運行命令hash -r並再試一次。爲了避免頻繁的$PATH查找,Bash使用哈希表將可執行文件名映射到可執行位置。當你在你的$PATH中安裝一個新的可執行文件時,其名字與$PATH中稍後的版本相同,Bash不知道它。運行hash -r說「清理你的散列表」。或者,你可以運行hash -d gcc來說「忘記你的散列表中的gcc」。

如果#2,則您需要通過其全名執行gcc(例如/opt/local/bin/gcc),或者修改您的$PATH以使包含新gcc的目錄早於現有gcc的目錄。假設您正常安裝了MacPorts,那麼應該已經爲您完成了 - 通過修改您的~/.bash_profile啓動文件,MacPorts將/opt/local/bin放在$PATH之前,而不是/usr/bin

如果#3,那麼找出可執行文件的名稱。幾乎可以肯定的是一個以gcc爲前綴的名字,所以如果你輸入gcc然後再按Tab鍵兩次,Bash會給你一個以gcc開頭的所有命令的列表。很有可能它被命名爲likw gcc-4.6gcc-mp-4.6

+0

我建議在'/ usr/local'中安裝一個自定義的gcc(通過給'。/ configure'配置'--prefix =/usr/local')並檢查你的'$ PATH'來確保'/ usr/local/bin'在'/ usr/bin'之前。另外,爲了顯示你的shell可以看到的所有gccs,使用命令'type -a gcc',它將顯示所有名爲'gcc'的命令的路徑。如果沒有'-a'選項,它會向你顯示如果你在命令行輸入'gcc'就會執行的那個選項。 –

+0

好的,謝謝你們倆的幫助。我跑了類型-a gcc並找到了2個版本。我想使用/ usr/local/bin/gcc中的第二個。當我執行/ usr/local/bin/gcc -v時,它顯示爲4.6.1。我怎樣才能修改我的$ PATH文件使其默認爲第一個? –

+0

其實,我修改了$ PATH文件,它看起來像這樣'在/ usr/local/bin目錄 在/ usr/bin中 /bin中 /usr/sbin目錄 /sbin' 但是當我做GCC --version我仍然有4.2.1 –