我可以从cygwin上的源代码构建LLVM和 clang吗?
构建 LLVM 和 Clang 需要多长时间?因为我尝试在 VirtualBox 上构建它们,所以大约需要 2 个小时。
我可以从cygwin上的源代码构建LLVM和 clang吗?
构建 LLVM 和 Clang 需要多长时间?因为我尝试在 VirtualBox 上构建它们,所以大约需要 2 个小时。
在为此付出了一些努力后,我认为分享我的一些发现可能是值得的。我设法在 Cygwin 1.7.28 (x86) 上构建了 Clang + LLVM 3.4。
Cygwin 的最新更新似乎破坏了 Clang 使用的系统头文件之一。Cygwin 邮件列表中提供了一个不完整的补丁。这是完整的补丁。
Clang++(从 3.4 开始)仍然硬编码 C++ 标准库的包含目录(它依赖于 GCC 提供的目录)。如果路径不正确(在 Cygwin 上经常出现这种情况),则在包含任何 C++ 标头(例如<iostream>
)时会遇到问题。解决此问题的两种可能方法:
您可以将正确的路径添加到代码中。这是相当不灵活的,因为每次更改时都必须重新编译 Clang++,这在 Cygwin 上需要很长时间。如果你想这样做,你可以clang/lib/Frontend/InitHeaderSearch.cpp
在第 389 行找到代码。
或者,您可以在 Clang 期望的位置创建符号链接。
通过执行以下命令识别 Clang++ 搜索的目录:
echo | clang++ -v -x c++ -
你应该找到类似的东西
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-cygwin/X.Y.Z/include/c++"
可能会有几个不同的版本号X.Y.Z
。选择其中任何一个,然后创建一个指向正确位置的符号链接:
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 文档中的大部分内容都适用于此处。
下载源代码。即使您只需要 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
你想开发 llvm/clang 还是用 llvm/clang 开发?对于后一种情况,为什么不从 cygwin 存储库安装 llvm-3.1/clang 二进制文件?它们在我的 Windows 7 上运行良好。