我可以在 cygwin 上从源代码构建 LLVM 和 clang 吗?
构建 LLVM 和 Clang 需要多长时间?因为我尝试在 VirtualBox 上构建它们,所以大约需要 2 小时。
最佳答案
在这方面花费了一些精力,我认为分享我的一些发现可能是值得的。我成功地在 Cygwin 1.7.28 (x86) 上构建了Clang + LLVM 3.4。
特定于 Cygwin
修复机器整数类型
Cygwin 最近的更新似乎破坏了 Clang 使用的系统 header 之一。 Cygwin mailing list 上提供了不完整的补丁。 。这是full patch 。
包含 C++ 标准库的目录
Clang++(从 3.4 开始)仍然对 C++ 标准库的包含目录进行硬编码(它依赖于 GCC 提供的目录)。如果路径不正确(Cygwin 上经常出现这种情况),则在包含任何 C++ header (例如 <iostream>
)时您将遇到问题。解决此问题的两种可能方法:
您可以向代码添加正确的路径。这是相当不灵活的,因为每次发生变化时您都必须重新编译 Clang++,并且这在 Cygwin 上需要很长时间。如果您想这样做,可以在
clang/lib/Frontend/InitHeaderSearch.cpp
找到代码。在第 389 行。或者,您可以在 Clang 需要的地方创建一个符号链接(symbolic link)。
通过执行以下命令来识别 Clang++ 搜索的目录:
echo | clang++ -v -x c++ -
你应该找到类似的东西
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-cygwin/X.Y.Z/include/c++"
可能会有几个不同的版本号
X.Y.Z
。选择其中任何一个,然后创建指向正确位置的符号链接(symbolic link):ln -s A.B.C /usr/lib/gcc/i686-pc-cygwin/X.Y.Z
哪里
A.B.C
是当前安装的 GCC 版本。
彩色诊断
如果您希望 Clang 发出彩色错误消息,请务必事先使用 Cygwin 安装程序安装 ncurses 开发包 ( libncurses-devel
)。如果没有它,Clang 将回退到无色模式,因为 LLVM 将无法检测终端是否支持颜色。
您仍然可以使用 -fcolor-diagnostics
强制显示颜色,但是GCC的链接器会因为这个标志而卡住,这使得使用起来非常不方便。
系统无关
这是最简单(也是最长)的部分,并且大多数情况下 LLVM + Clang 文档中的所有内容都适用于此处。
Download the source 。即使您只需要 Clang,您仍然需要 LLVM 源代码。
解压 Clang 和 LLVM 后,将 Clang 的目录移至
tools
LLVM 的子目录。mv clang-X.Y llvm-X.Y/tools/clang
首先配置:
./configure --enable-optimized
Clang 更喜欢选择自己作为编译器,因此如果您还没有安装可用的 Clang,请使用
CC
和CXX
环境变量强制它使用 GCC。如果一切顺利,您可以开始构建和安装,这将构建 clang 和 llvm:
make && make install
关于cygwin - 如何在 cygwin 上构建 llvm 和 clang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297285/