Ⅰ GCC/G++,ICC,Clang,MSVC,BCC等C/C++編譯器有什麼特長和不足
clang編譯速度快,但是貌似編譯結果運行相對會慢。功能更新一般也比較快。
g++編譯速度比clang慢,編譯結果運行貌似比clang快。功能更新稍慢。
vc這幾年沒編譯過大工程,感覺上編譯速度在clang和g++之間。以過去的經驗g++和vc編譯結果運行速度差不多。功能更新上就是一坨屎。但是在Windows上寫點正經東西你可能不得不用它,相對的你也只能在Windows上用它。
icc很久沒用過,過去印象編譯速度很慢,運行速度最快但是感覺有點得不償失。最大的問題是這東西要錢,前三個都是免費的。
bcc直接無視就好了。
Ⅱ clang生成的so其它編譯器能用嗎
示是clang)和Clang前端(按照具體實現來說就是Clang的那些庫所實現的前端)是不同的,同時還存在一個Clang編譯器(命令行表示是clang -cc1)。Clang編譯器不僅僅包含了Clang前端,還包括使用LLVM的哭實現的編譯器的中間階段以及後端,同時也集成了assembler。
Clang driver有一系列的frontend action,這些frontend action定義於clang/include/clang/Frontend/FrontendOptions.h中的ActionKind枚舉中。其中一些frontend action就會觸發Clang編譯器(clang -cc1),比如:ASTView, EmitBC, EmitObj等。一旦觸發了Clang編譯器(clang -cc1),就會執行函數cc1_main()(clang/tools/driver/cc1_main.cpp),從名字上就可以看出來,這個函數是Clang編譯器(clang -cc1)的入口主函數。
舉個具體的例子來看一下:
min.c
Ⅲ Clang 比 GCC 編譯器好在哪裡
編譯速度更快、編譯產出更小、出錯提示更友好。尤其是在比較極端的情況下。
兩年多前曾經寫過一個Scheme解釋器,詞法分析和語法解析部分大約2000行,用的是Boost.Spirit——一個重度依賴C++模版元編程的框架。當時用g++ 4.2編譯的情況是:
編譯速度極慢:完整編譯一次需要20分鍾
編譯過程中內存消耗極大:單個g++實例內存峰值消耗超過1G
中間產出物極大:編譯出的所有.o文件加在一起大約1~2G,debug鏈接產物超過200M
編譯錯誤極其難以理解:編譯錯誤經常長達幾十K,基本不可讀,最要命的是編譯錯誤經常會長到被g++截斷,看不到真正出錯的位置,基本上只能靠裸看代碼來調試
這里先不論我使用Spirit的方式是不是有問題,或者Spirit框架自身的問題。我當時因為實在忍受不了g++,轉而嘗試clang。當時用的是clang 2.8,剛剛可以完整編譯Boost,效果讓我很滿意:
編譯速度有顯著提升,記得大約是g++的1/3或1/4
編譯過程中的內存消耗差別好像不大
中間產出物及最終鏈接產物,記得也是g++的1/3或1/4
相較於g++,編譯錯誤可讀性有所飛躍,至少不會出現編譯錯誤過長被截斷的問題了
當時最大的缺點是clang編譯出的可執行文件無法用gdb調試,需要用調試器的時候還得用g++再編譯一遍。不過這個問題後來解決了,我不知道是clang支持了gdb還是gdb支持了clang。至少我當前在Ubuntu下用clang 3.0編譯出的二進制文件已經可以順利用gdb調試了。
最後一點,其他同學也有講到,就是Clang採用的是BSD協議。這是蘋果資助LLVM、FreeBSD淘汰GCC換用Clang的一個重要原因。
答案出自:http://www.hu.com/question/20235742
Ⅳ 如何使用clang實現多文件插樁
雖然沒用過,但是代碼靜態分析(Static Analyze)是用 scan-build 命令,生成調試符號是 -g 選項。
Ⅳ 我用clang編譯一個文件 main.c 當中引用了當前目錄下的 set.h 頭文件 編譯的時候報
能把當時的命令,目錄,代碼情況提供一下嗎?
我在ubuntu虛擬機中可以正常運行,我猜測可能是這個問題:
1.
#include"set.h"
寫成了
#include<set.h>
2.main.c和set.h不在同一目錄下
3.命令行中由於隔了幾級目錄,實際編譯的不是你所要的main.c文件,而是其他目錄下的main.c文件
Ⅵ C語言IDE的Debug和Release版本在命令行的編譯選項上有什麼區別
編譯調試大型程序時使用DEBUG,這種情形下不做任何的代碼優化,且會包含所有的調試信息。
RELEASE發布版本,經過DEBUG版本確定沒有問題就可以用這個生成帶有代碼優化和無調試信息的版本,用來給用戶使用
編譯選項的區別么,依賴具體的編譯器,可以參考網頁鏈接
Ⅶ 如何設置來用clang/clang++替換linux下的默認編譯器Gcc
我暈, 你到底是在什麼發行版? 從提示上來看,要用 apt-get install 來裝,說明是 ubuntu/debian之類的linux發行版,你怎麼又會去用 rpm 來查詢和安裝軟體? 你不說你是什麼發行版,樓上回答的人也不管,直接就讓你用rpm,誤人子弟啊。
正確的方法是,
sudo apt-get install build-essential
這個才是你的系統應該用的,裝好後命令行下運行
gcc -v
就會列印出你使用gcc的版本信息了,然後就可以用了,比如
gcc -o test test.c
就會編譯test.c,生成可執行文件 test
然後
./test
就會運行test
我再暈,樓主,提示你沒有test.c,你的C源文件呢?我這里是用test.c做例子,你的源文件叫什麼名字,你就把test.c換成你的文件的名字啊。另外,你要把你的源文件先保存在linux機器上,比方說放到了 /home/yourname/aaa
那你要先
cd /home/yourname/aaa
然後再
gcc -o test test.c
Ⅷ 話說vim中用clang,怎麼關聯到編譯器的那些頭文件
clang是一個編譯器,你的說法有點問題。。但意思應該是代碼自動補全吧
要安裝clang conplete插件:
下載http去掉我://www.vim.org/scripts/download_script.php?src_id=19588
終端cd入下載目錄,vim clang_complete.vmb -c 'so %' -c 'q'
Ⅸ 哪個 語言 編譯 體積 最小 clang
主要還是看演算法
在相同演算法情況下
匯編做出來的程序 體積最小
高級語言中C最小
其次C++
Ⅹ cxxflags 可以添加的編譯選項有哪些
MSVC 默認的支持 C++11 無需設置任何參數,但 GCC 和 Clang 需要使用 require-std=C++0x 來啟用 C++11 的支持。默認情況下,Qt5 自身是要求用 C++11 的參數進行編譯的。如果使用 qmake可以在 .pro 項目文件中添加如下參數: ? 1 CONFIG += C++11...