2014-02-13 172 views
4

我安裝了clang以將其用於某些C++程序的g ++(gcc);如在,我比較編譯時間,錯誤反饋等。爲同樣的節目。我這樣做主要是爲了正式的LLVM教程(使用LLVM實現編譯器)。Clang,LLVM和g ++

有一次,我需要安裝LLVM庫(v.2.9),而之前我只下載了clang。在此之後,使用clang ++進行編譯似乎不適用於以下教程代碼;而g ++似乎與LLVM指令一起工作(例如'llvm-config --libs`等)。在安裝這些庫的同時,我還必須從我正在閱讀的舊教程(llvm 2.2。,建議使用clang ++語法)到3.0的一個教程。 (提示g ++語法),因爲庫包含位置已經改變。

我的問題下載LLVM庫後解釋的變化:

(1)現在當我鍵入「G ++」,我還受實際使用gcc工作或者LLVM /鐺爲自己設定爲一個新的默認模仿gcc語法?如果是的話,當我想要的時候,我怎麼能確保我實際上使用gcc,而不是叮噹聲? (2)如果g ++仍然是gcc,那麼任何意見/猜測爲什麼官方clang/llvm教程從建議使用它自己的競爭編譯器改回gcc? (C,例如,here。)

我的系統:

的Ubuntu 12.04。
llvm 2.9。
gcc 4.6.3。
鏗鏘3.0。

+3

你可以嘗試運行命令'哪個g ++'和'g ++ --version' –

+1

據我所知,clang對現有的gcc可執行文件沒有任何作用。你鏈接的LLVM教程可以使用任何C++編譯器,所以我猜他們切換到gcc,因爲你的普通人更有可能擁有gcc而不是擁有gng。 –

+0

@ vonbrand:我在軟件管理器中鍵入'llvm'。開發者庫彈出,我安裝了。在我可以安排的地方,我更願意將我的安裝集成到軟件管理器中。 – gnometorule

回答

1

爲了打字g++執行鏗鏘編譯器,你可能在你的$PATH比路徑尋找要麼叫g++以鏗鏘的符號鏈接,早前到真正g++,要不叫g++的別名,沿着alias g++='clang++'的路線。

您可以通過鍵入alias g++檢查別名(雖然我想這是不可能的),這將讓你知道,如果你有任何別名設置(如果有的話,什麼)

爲了改變$PATH問題,如果它發生,你必須刪除符號鏈接(似乎是合理的,如果你想clang,你可以只鍵入clang++而不是g++)或更改PATH變量中的符號鏈接的位置,但因爲它們可能存在於/usr/local/bin或類似的東西中,這樣就不太可能產生符號鏈接!

鑑於此,可能g++仍會調用gcc g++編譯器,有人只是打字教程時稍不小心 - 我只看到你g++鏈接的頁面上的一個提,接近底部?

+0

好的建議,會檢查湯姆。 – gnometorule

+0

最後一段:它不止於此。如果你使用clang ++替換g ++來嘗試相同的命令,你將會遇到錯誤。我認爲這並不令人驚訝,因爲也許,llvm-config是爲了讓gcc執行llvm代碼和庫,所以在clang中沒有意義? – gnometorule

+0

我正在看的位讀取'g ++ -g -O3 toy.cpp \'llvm-config --cppflags --ldflags --libs core \'-o toy' - 我的理解是封閉的命令''''''內的標記將由shell執行,然後g ++將被執行 - 例如你可以嘗試'g ++ \'echo「-I $ DIR_TO_INCLUDE」\'file.cpp -o EXE_FILE'和它將包括你的目錄。我無法真正想象爲什麼'llvm-config --cppflags --ldflags --libs core'的輸出應該通過被g ++接受爲標誌的東西,但不是鏗鏘聲++?除非存在一些輕微的語法差異等。 – chrisb2244