clang和clang-mp-3.3(3.2或3.4)有什么区别?

时间:2013-08-05 13:12:39

标签: compiler-construction clang macports

this也有类似的问题,但我对答案不满意。

我尝试安装clang。在尝试安装clang之后我最终得到了两个铿锵声。 一个是/ usr / bin / clang或clang ++和其他/opt/local/bin/clang-mp-3.3或clang ++ - mp-3.3(我从macport安装)

当我编译简单程序时,它们的行为相同,但是当我尝试编译其他大而复杂的C ++代码时,它们会有所不同。我尝试阅读documentation以获得一些概述。

在这里ticket我能够知道macport clang更接近gcc。我知道clang做前端工作(作为c型语言解释器)并且llvm是后端的。首先是什么以及如何产生差异?感谢您的时间。

1 个答案:

答案 0 :(得分:1)

TL; DR :如果它们在llvm版本方面足够接近,它们的行为应该相似(可能在其中一个上添加了优化/功能)。但是我没有任何信息可以用来找出你的意思。

从我从Portfile看到的,{llvm,clang} -3.4端口(以及其他类似的端口,我假设)安装一个普通的llvm和/或clang。

例如:最新发布的Xcode附带:

Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.2.0
Thread model: posix
Apple没有告诉我们具体的修订号,但是我们知道他们的私人铿锵声是基于2013年中期到2014年初之间对行李箱进行分支的修订版。

我也不明白你的意思是“macport clang更接近gcc”。这似乎没有任何意义,但我可能会误解。 Apple的铿锵声与主流铿锵声AFAIK相当接近。他们有自己的版本,这些版本基于未知版本,但仍然存在。

Clang是 llvm项目的 C前端。它由llvm社区引导,所有(公共)工作都发生在主llvm存储库(在clang的目录中)。但你仍然可以在没有clang的情况下安装llvm,或者在没有(大部分?)其他llvm实用程序的情况下进行clang。这就是你在macports上为clang和llvm提供单独包的原因。

为什么你说他们的行为不同,他们的行为有多么不同?你在编译时使用相同的选项吗?哪个?它们是否来自同一版本,如3.3和3.3svn(这只表示它们之间最多只有6个月,它们不会使它们完全相同)?