我可以在cygwin上从源代码构建LLVM和clang 吗?
构建LLVM和Clang需要多长时间?因为我尝试在VirtualBox上构建它们,大约需要2个小时.
Ruf*_*ind 15
在这方面花了一些精力,我认为分享我的一些发现可能是值得的.我设法在Cygwin 1.7.28(x86)上构建了Clang + LLVM 3.4.
最近对Cygwin的更新似乎打破了Clang使用的系统头之一.Cygwin邮件列表中提供了一个不完整的补丁.这是完整的补丁.
Clang ++(截至3.4)仍然硬编码C++标准库的include目录(它依赖于GCC提供的目录).如果路径不正确(在Cygwin上通常是这种情况),则在包含任何C++标头(例如<iostream>)时会遇到问题.解决此问题的两种可能方法:
您可以为代码添加正确的路径.这是相当不灵活的,因为每次改变时你都必须重新编译Clang ++,这需要很长时间才能完成Cygwin.如果你想这样做,你可以clang/lib/Frontend/InitHeaderSearch.cpp在第389行找到代码.
或者,您可以创建Clang期望它们的符号链接.
通过执行以下命令识别Clang ++搜索的目录:
echo | clang++ -v -x c++ -
Run Code Online (Sandbox Code Playgroud)
你应该找到类似的东西
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-cygwin/X.Y.Z/include/c++"
Run Code Online (Sandbox Code Playgroud)
可能会有几个不同的版本号X.Y.Z.选择其中任何一个,然后创建指向正确位置的符号链接:
ln -s A.B.C /usr/lib/gcc/i686-pc-cygwin/X.Y.Z
Run Code Online (Sandbox Code Playgroud)
哪个A.B.C是当前安装的GCC版本.
如果您想要来自Clang的彩色错误消息,请务必事先使用Cygwin安装程序安装ncurses开发包(libncurses-devel).没有它,Clang将回退到无色模式,因为LLVM无法检测终端是否支持颜色.
您仍然可以强制显示颜色-fcolor-diagnostics,但GCC的链接器会阻塞此标志,这使得它非常不方便使用.
这是最简单(也是最长)的部分,在大多数情况下,LLVM + Clang文档中的所有内容都适用于此处.
下载源代码.即使您只需要Clang,您仍然需要LLVM源代码.
解压缩Clang和LLVM后,将Clang的目录移动到toolsLLVM 的子目录中.
mv clang-X.Y llvm-X.Y/tools/clang
Run Code Online (Sandbox Code Playgroud)首先配置:
./configure --enable-optimized
Run Code Online (Sandbox Code Playgroud)
Clang更喜欢选择自己作为编译器,所以如果你还没有工作的Clang安装,请使用CC和CXX环境变量来强制它使用GCC.
如果一切顺利,你可以开始构建和安装,这将构建clang和llvm:
make && make install
Run Code Online (Sandbox Code Playgroud)你想开发llvm/clang还是使用llvm/clang进行开发?对于后一种情况,为什么不从 cygwin 存储库安装 llvm-3.1/clang 二进制文件?它们在我的 Windows 7 上运行得很好。