您需要安装什么才能在 windows 上使用 Clang 为 64 位构建 c++14?
What do you need to install to use Clang on windows to build c++14 for 64 bit?
更新:
我写了一个详细的教程,其中包含关于这个问题的前两个答案:http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/
TL;DR
在 Windows 上,给定以下程序:
#include <iostream>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
for(auto el : arr)
{
std::cout << el << std::endl;
}
return 0;
}
我希望能够做到以下几点:
clang++ hello.cpp -o hello.exe -std=c++14
并获得一个正常工作的 64 位可执行文件。我不想附加大量 -I
包含来告诉 clang 在哪里可以找到 iostream
或其他标准 c++ headers;我不想 link 分多个步骤。
我不太在乎性能,效率,linker用什么等等,我只是希望能够正确设置clang/gcc/whatever,这样我就可以使用一个像上面那样的单一的、快速的、肮脏的控制台命令。
我需要安装什么才能正常工作?
问题
作为主要 mac/linux 用户,我习惯于使用包管理器来安装最新版本的 clang, 可以正常工作。
我现在正尝试在 windows 上设置 clang/gnu 编译器,这似乎要困难得多,如果只是因为那里几乎没有直接的文档(我'已经找到)
我尝试按照本教程进行操作:https://yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows - 并且能够使用它来构建 clang 和 link(使用 gcc 4.8.2),但是生成的二进制文件是32 位。
我已经尝试安装最新的 clang 预构建二进制文件 (3.6.2) and the 64 bit version of mingw-w64 (4.9.3 for 64 bit with posix and sjlj for exceptions),并且得到:
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^
1 error generated.
这似乎表明 clang 没有看到 gcc 的文件。似乎某些版本的 LLVM/clang 只在寻找特定版本的 gcc,但似乎没有在任何地方记录?
同样有人在 LLVM IRC 上向我提到你需要修改 clang 的 driver 以在某些路径中查找 gcc?
我在找什么
如有必要,我可以从源代码构建 LLVM/Clang,但我真的只是在寻找清晰的 step-by-step 说明,让我可以像使用 clang++
一样轻松我可以用 mac/linux
类似于:
- 构建 LLVM/Clang 的
this version
并将其放置在 that directory
- 下载并安装
this version
的cygwin(或mingw32或mingw-w64)并安装these packages
。
- 等..
尝试安装 MSYS2,然后安装 mingw-w64-x86_64-clang(二进制)包:
pacman -S mingw-w64-x86_64-clang
目前它有点旧 (3.6.2),但对您来说可能已经足够好了。那么当你运行MSYS2提供的Win64shell时,clang
就会在你的路径上。
如果还不够好,我最近一直在用 MSYS2 构建一个 64 位版本的 clang,并用它来编译本机 64 位 Windows 可执行文件。我的过程是这样的:
- 使用 pacman 安装 base-devel、mingw-w64-x86_64-ninja、mingw-x86_64-cmake 以及构建过程可能需要的其他一些包。
- 从 MSYS2 中获取 my PKGBUILD script for clang and the files in the same directory. This is based on the mingw-w64-clang-svn 包,这主要是 Martell Malone 的工作。你可以在 MSYS2 IRC 频道找到他,并向他询问更多相关信息。
- 在 Win64 中,shell,进入我的 PKGDUILD 目录,运行
export MINGW_INSTALLS=mingw64
(所以你只编译 64 位版本),然后 运行 makepkg-mingw
.
您不太可能在第一次尝试时就做对所有事情,并且某些文件可能需要编辑。自从我上次这样做以来,Clang 可能已经发生了变化,一些补丁可能无法完全应用。
如果您使用即将发布的 clang 3.7.0,只需将 PATH 设置为包含 mingw-w64 的 bin,clang 就会如您所愿
您可以为 Windows here. MinGW-w64 can be downloaded here 安装 llvm pre-release 二进制文件。当然,你应该确保路径设置正确。
对于最新版本的 clang,例如 clang 6.0.0
。 @user5271266 的上述解决方案是不够的。现在 clang Windows 的默认目标是 x86_64-pc-windows-msvc
(假设您使用的是 64 位 Windows)。
为了编译C++源文件,根据,我们应该改变目标:
clang++ -target x86_64-pc-windows-gnu -std=c++14 test.cc -o test.exe
更新:
我写了一个详细的教程,其中包含关于这个问题的前两个答案:http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/
TL;DR
在 Windows 上,给定以下程序:
#include <iostream>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
for(auto el : arr)
{
std::cout << el << std::endl;
}
return 0;
}
我希望能够做到以下几点:
clang++ hello.cpp -o hello.exe -std=c++14
并获得一个正常工作的 64 位可执行文件。我不想附加大量 -I
包含来告诉 clang 在哪里可以找到 iostream
或其他标准 c++ headers;我不想 link 分多个步骤。
我不太在乎性能,效率,linker用什么等等,我只是希望能够正确设置clang/gcc/whatever,这样我就可以使用一个像上面那样的单一的、快速的、肮脏的控制台命令。
我需要安装什么才能正常工作?
问题
作为主要 mac/linux 用户,我习惯于使用包管理器来安装最新版本的 clang, 可以正常工作。
我现在正尝试在 windows 上设置 clang/gnu 编译器,这似乎要困难得多,如果只是因为那里几乎没有直接的文档(我'已经找到)
我尝试按照本教程进行操作:https://yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows - 并且能够使用它来构建 clang 和 link(使用 gcc 4.8.2),但是生成的二进制文件是32 位。
我已经尝试安装最新的 clang 预构建二进制文件 (3.6.2) and the 64 bit version of mingw-w64 (4.9.3 for 64 bit with posix and sjlj for exceptions),并且得到:
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^
1 error generated.
这似乎表明 clang 没有看到 gcc 的文件。似乎某些版本的 LLVM/clang 只在寻找特定版本的 gcc,但似乎没有在任何地方记录?
同样有人在 LLVM IRC 上向我提到你需要修改 clang 的 driver 以在某些路径中查找 gcc?
我在找什么
如有必要,我可以从源代码构建 LLVM/Clang,但我真的只是在寻找清晰的 step-by-step 说明,让我可以像使用 clang++
一样轻松我可以用 mac/linux
类似于:
- 构建 LLVM/Clang 的
this version
并将其放置在that directory
- 下载并安装
this version
的cygwin(或mingw32或mingw-w64)并安装these packages
。 - 等..
尝试安装 MSYS2,然后安装 mingw-w64-x86_64-clang(二进制)包:
pacman -S mingw-w64-x86_64-clang
目前它有点旧 (3.6.2),但对您来说可能已经足够好了。那么当你运行MSYS2提供的Win64shell时,clang
就会在你的路径上。
如果还不够好,我最近一直在用 MSYS2 构建一个 64 位版本的 clang,并用它来编译本机 64 位 Windows 可执行文件。我的过程是这样的:
- 使用 pacman 安装 base-devel、mingw-w64-x86_64-ninja、mingw-x86_64-cmake 以及构建过程可能需要的其他一些包。
- 从 MSYS2 中获取 my PKGBUILD script for clang and the files in the same directory. This is based on the mingw-w64-clang-svn 包,这主要是 Martell Malone 的工作。你可以在 MSYS2 IRC 频道找到他,并向他询问更多相关信息。
- 在 Win64 中,shell,进入我的 PKGDUILD 目录,运行
export MINGW_INSTALLS=mingw64
(所以你只编译 64 位版本),然后 运行makepkg-mingw
.
您不太可能在第一次尝试时就做对所有事情,并且某些文件可能需要编辑。自从我上次这样做以来,Clang 可能已经发生了变化,一些补丁可能无法完全应用。
如果您使用即将发布的 clang 3.7.0,只需将 PATH 设置为包含 mingw-w64 的 bin,clang 就会如您所愿
您可以为 Windows here. MinGW-w64 can be downloaded here 安装 llvm pre-release 二进制文件。当然,你应该确保路径设置正确。
对于最新版本的 clang,例如 clang 6.0.0
。 @user5271266 的上述解决方案是不够的。现在 clang Windows 的默认目标是 x86_64-pc-windows-msvc
(假设您使用的是 64 位 Windows)。
为了编译C++源文件,根据
clang++ -target x86_64-pc-windows-gnu -std=c++14 test.cc -o test.exe