Ⅰ 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...