2011-12-29 90 views
4

我想玩C++ 2011,所以我需要未發佈的gcc 4.7。我能夠成功獲取svn trunk並編譯它。如何正確切換gcc版本?

我要保持我的安全系統默認的gcc,所以我配置gcc4.7與--prefix和非標準位置安裝它。

現在應該如何在系統默認的gcc上啓用gcc 4.7?

我已經改變了CCCXX變量,我更新了我的PATH對GCC 4.7 目錄第一點。當我輸入gcc --version我得到4.7 OK。

但gcc不僅僅是一個可執行文件。 gcc安裝目錄中有很多可執行文件。還有默認包含和std lib C++。

到目前爲止,每一個博客條目/ SO問題,我在這個問題上找到只講了GCC克++可執行文件。

任何人都可以給我一個清單,我需要做的環境來完全使用gcc 4.7嗎? 更新LD_LIBRARY_PATH?如何優先考慮gcc 4.7系統?還有其他事情要考慮嗎?

在此先感謝。

+2

在GCC FAQ中回答:http://gcc.gnu.org/faq。html#multiple – 2011-12-29 18:04:17

+0

我用gcc 4.7編譯後遇到奇怪的段錯誤。這就是爲什麼我要求提供我可能錯過的信息。因此,在我的問題「正常」;) – Offirmo 2011-12-29 18:58:31

回答

1

最簡單的答案是:無;它只是工作。 :)

GCC找到它首先相對於它自己的需求,第二個在它配置的「前綴」中,最後在標準位置。通過這種方式,只要您重新定位全部,就可以將其重新定位到任何位置,但要注意,如果安裝不完整,則回退行爲會隱藏破碎。

+0

好吧,所以很可能我遇到的問題是來自其他問題。將再試一次。 – Offirmo 2011-12-29 23:22:16

0

看看GCC Configuration docs。我使用程序後綴來區分不同的GCC版本。爲此,請將--progam-suffix=-4.7添加到您的./configure調用中。

2

我會認爲g ++與C++的東西非常糾結,因爲C庫與系統糾結在一起! C++庫類中的任何佈局更改都會導致與其他C++程序或庫不兼容。因此,我不會替換系統的C++編譯器,或者更重要的是它的標準C++庫(除非編譯器供應商強烈聲稱他們保留了與您要替換的版本的二進制兼容性)。

要播放甚至使用不同版本的g ++,使用前綴方法可以正常工作。所有編譯器特定的工具都是在g ++中使用適當的版本隱式調用的,而像ar,ld,ranblib等工具並非真正依賴於編譯器版本。內部使用的重要組件是標準庫(標題和庫)和預處理器。當調用g ++版本時,它會計算出它真正需要哪些版本。

順便說一句,當你想玩C++ 2011時,你也可以看看叮噹聲。

+0

謝謝,我試過鏗鏘聲,但它沒有發現我的代碼中導致崩潰的錯誤。海灣合作委員會立即發現一個概述問題的編譯錯誤。自從我堅持gcc。在clang和gcc之間切換比在兩個gcc之間切換更容易。 – Offirmo 2011-12-29 18:56:42