clang代替gcc

因为需要研究的别人的代码里用到了clang++,所以在此记录一下。转载自:无求备斋笔记

 

gcc/g++ 和 clang/clang++ 都是 Linux 下常用的 C/C++ 编译器。gcc 是 GNU 亲儿子,Ubuntu 等常用发行版标配。clang 是后起之秀,配合 llvm,以优秀的前端闻名于世,现在已经是 Mac(XCode) 的默认编译器,微软等大公司都在往上靠,前景一片光明。知乎上对几个主流编译器的评价:

(1)前景最好的应该是clang,错误提示/编译速度都是一流。另外现在有很多代码自动完成/提示工具是基于clang的。clang编译出的debug文件已经可以用gdb调试了哈,vs2015也内置了clang来提供对cross platfrom的支持。

(2)gcc/g++/msvc因为面向了具体的platform,所以老的项目里面可能用了他们自带的扩展/或者在彼此应用环境下有一些best practice,这个没有办法,还得接着用。。。

(3)Borland?还活着?

(4)ICC,据说经ICC编译后效率有提高,即使是AMD的U也是这样。。。我没试过。。。

对我自己而言,优先级是clang>g++>msvc。

 

OK,那么 clang 如何优秀呢,测试一下。测试平台 Ubuntu 15.04. 安装方法:

sudo apt-get install llvm
sudo apt-get install clang

切换默认 C++ 编译器:

sudo update-alternatives --config c++
There are 2 choices for the alternative c++ (providing /usr/bin/c++).

Selection    Path              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/g++       20        auto mode
1            /usr/bin/clang++   10        manual mode
2            /usr/bin/g++       20        manual mode

Press enter to keep the current choice[*], or type selection number: 1

对于 C 语言:

sudo update-alternatives --config cc

流程同 C++。

用拼写错误的变量名来测试一下 gcc 和 clang 的前端提示。

gcc 提示:

clang代替gcc

clang 提示:

clang代替gcc

仅仅在这个例子中,可以看到 clang 优于 gcc 的地方有

  1. 优美的颜色高亮。单色 gcc 看着真累。

  2. 智能的提示。clang 不仅告知有未定义变量,且知道可能是拼写出错,并提示可能的正确变量在哪。

  3. 更优异的大局观。本例子中拼写错误出现在 return 语句里,由于 return 语句编译出错,gcc 还抛出一个 non-void function 可能缺少 return 语句的 warning (明明我的 return 语句已经写在那里了)。clang 则知道 return 语句在那里,不会抛出这个没有必要的 warning。

目前我使用 clang 碰到的问题是,编译使用 boost 库的项目,运行时直接 Segmentation Fault,g++ 则无此问题。现在我直接使用 C++ 11 的多线程 API,不用 boost,于是仍用 clang 愉快地玩耍。

原文链接: https://www.cnblogs.com/taolusi/p/9238981.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    clang代替gcc

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/276769

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午1:59
下一篇 2023年2月15日 上午2:00

相关推荐