我应该下载哪个Clang编译器?

25

我想在我的系统上安装Clang编译器。我访问了这个链接,但是下载选项太多了,让我感到困惑,不知道应该下载哪个版本。

我正在使用戴尔的笔记本电脑:Windows 7 Basic 64位。我已经安装了MinGW版本4.5.0,并且还安装了Visual Studio 2008和2010。

你认为哪个版本最适合我?我应该下载哪个Clang版本?如何配置它?我将第一次使用Clang。请为我提供最佳建议!

另外,我能否配置Clang(或Visual Studio),以便Visual Studio可以使用Clang编译器来编译我的C和C++代码?


编辑:

下载页面神秘地说“Mingw32/x86前端二进制文件”时,这是什么意思?


1
而且,为什么不建议我选项呢? - Nawaz
我会使用VS因为我已经拥有它了,它的集成开发环境易于入门并且可以免费获取。尽管如此,我不会为Windows编写C代码,但我认为旧版本的VSC++在扩展名为.c时也可以进行C模式(而非C ++)的编译。 - kenny
1
@kenny:使用VS,您可以配置项目以C模式进行编译。 - Nawaz
3个回答

14

您可以在Visual Studio或MinGW中使用Clang。选择权在于您。但是,您需要一个外部链接器来生成Windows可执行文件(MSVS的link.exe或MinGW的ld.exe/g++.exe)。

如果您想使用MinGW,请下载倒数第二个项(mingw的前端二进制文件)。

您还可以从源代码编译Clang/LLVM,请参见这里。这使您可以尝试使用MSVS或MinGW(-w64)。您需要CMake进行构建过程。

更新:关于您的编辑: "前端"描述反映了llvm可以通过llvm-gcc作为GCC编译的后端使用的事实(谷歌上有大量信息),或者Clang本身无法将您的代码链接到可执行文件或库中的事实。您仍然需要如上所述的系统链接器。


顺便问一下,“使用Clang和MinGW”是什么意思?在Visual Studio中使用Clang对我来说很有意义;这意味着我可以在Visual Studio中编写程序,但当我命令它构建我的项目时,它将选择Clang编译器来编译我的项目。但是在MinGW中没有这样的东西。MinGW本身就是编译器,而不是IDE。 - Nawaz
2
@Nawaz: 我是指 MSVC(实际上只是链接器+库/头文件的工具链)。 如果您使用 MinGW(带有其 Win32 API 头文件和库),则将使用其链接器 ld.exe。 如果您使用带有 Clang 的 MSVC,则将使用 MSVC 的 link.exe 和 Windows SDK 头文件和库,这些头文件和库略微更加功能齐全。 我不是基于 IDE 进行项目管理,而是使用跨平台构建工具(当前为 CMake 或 qmake)。 我同时使用 MSVS 和 MSVC 来指代工具链本身,对于造成的混淆,我表示抱歉。 当然,这并不意味着您不能使用 Visual Studio IDE 来使用 Clang... - rubenvb
1
我只是担心它不会像你期望的那样工作,因为微软根本不关心其他编译器。我只知道英特尔编译器使用了微软的构建工具。在MinGW业务中,没有人关心Visual Studio(如果你使用GCC,你自动被推向更多跨平台代码,或者已经以跨平台方式编码)。 - rubenvb
@rubenvb:那是有用的信息。谢谢。再加一。 (天知道我的上一个赞怎么了!也许是我的浏览器出了问题!)。 - Nawaz
@Nawaz:谢谢!值得一提的是,Clang在Windows上还没有完全成熟,但特别是x86(32位)方面应该能够正常工作。x64仍在进展中。 - rubenvb
@rubenvb:谢谢您的时间。我还有最后一件想知道的事情,为此我编辑了我的问题。请看一下。 - Nawaz

2
Clang现在开始发布Windows快照版本构建。

1

没有。Mingw32/x86的前端二进制文件很接近,但您明确提到了Windows 7 Basic 64位,因此为了非常具体,您将获得64位优势。因此,您将按照http://clang.llvm.org/get_started.html#buildWindows中的步骤进行操作。您可以获取VS2012 Express和带有CMake的字符串应为“Visual Studio 11 Win64”。从下拉菜单中选择发布而不是默认的调试配置,然后构建。工具链是紧密耦合的层次结构,而微软对非标准扩展的沉迷从未被其他供应商实现更新。直到llvm libcpp完成MinGW-W64是我从http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Automated%20Builds/mingw-w64-bin_i686-mingw_20111220.zip/download获得的最接近的libstdc++。请在http://mingw-w64.sourceforge.net/上检查更新版本。以下是我的Hi控制台应用程序的试用调用

clang++.exe -fno-ms-compatibility -fno-use-cxa-atexit -IC:\mingw\include\c++\4.7.0 -IC:\mingw\include\c++\4.7.0\x86_64-w64-mingw32 -IC:\mingw\include\c++\4.7.0\backward -IC:\mingw\include -c C:\Users\Vipul\Documents\Hello.cpp -o C:\Users\Vipul\Documents\Hello.o

ld.exe -oC:\Users\Vipul\Documents\Hello.exe C:\Users\Vipul\Documents\Hello.o -m i386pep -Bdynamic -Lc:\mingw\lib c:\mingw\lib\crt2.o c:\mingw\lib\crtbegin.o -lstdc++ -lmingw32 -lgcc_s -LC:\Windows\SUA\opt\gcc64\lib\gcc\x86_64-pc-interix6\4.6.0 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 c:\mingw\lib\crtend.o

在配置IDE设置时,参数只需要设置一次,比如Code::Blocks。要确定传递给ld链接器的库,请使用-v和g++,因为clang++会尝试将libc++源代码与VS2012二进制文件进行链接。使用g++而不是ld更容易,但由于在源代码中硬编码工具位置,很少会出现ld未找到内部耦合的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接