如何在cygwin上构建llvm和clang

时间:2012-11-08 20:29:48

标签: cygwin llvm-clang

我可以在 cygwin 上的源代码中构建 LLVM 和clang吗?

构建LLVM和Clang需要多长时间?因为我尝试在VirtualBox上构建它们,大约需要2个小时。

3 个答案:

答案 0 :(得分:15)

在这方面花了不少心血,我觉得分享我的一些调查结果可能是值得的。我设法在Cygwin 1.7.28(x86)上构建 Clang + LLVM 3.4

Cygwin的特异性

修复机器整数类型

最近对Cygwin的更新似乎打破了Clang使用的系统头之一。 Cygwin mailing list上提供了一个不完整的补丁。这是 full patch

包含C ++标准库的目录

Clang ++(截至3.4)仍然硬编码C ++标准库的include目录(它依赖于GCC提供的目录)。如果路径不正确(在Cygwin上通常是这种情况),则在包含任何C ++标头(例如<iostream>)时会遇到问题。解决这个问题的两种可能方法:

  • 您可以为代码添加正确的路径。这是相当不灵活的,因为每次这种变化都需要重新编译Clang ++,这需要很长时间才能完成Cygwin。如果您想这样做,可以在第389行clang/lib/Frontend/InitHeaderSearch.cpp找到代码。

  • 或者,您可以创建Clang期望的符号链接

    1. 执行以下命令识别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 Setup 安装ncurses开发包libncurses-devel)。没有它,Clang将回退到无色模式,因为LLVM无法检测终端是否支持颜色。

你仍然可以强制颜色与-fcolor-diagnostics一起出现,但是GCC的链接器会阻塞这个标志,这使得它非常不方便使用。

系统无关

这是最简单(也是最长)的部分,在大多数情况下,LLVM + Clang文档中的所有内容都适用于此。

  1. Download the source。即使您只需要Clang,您仍然需要LLVM源代码。

  2. 解压缩Clang和LLVM后,将Clang的目录移动到LLVM的tools子目录中。

    mv clang-X.Y llvm-X.Y/tools/clang
    
  3. 首先配置:

    ./configure --enable-optimized
    

    Clang更喜欢选择自己作为编译器,所以如果你还没有安装Clang,请使用CCCXX环境变量来强制它使用GCC。

  4. 如果一切顺利,你可以开始建设&amp;安装,将构建clang和llvm:

    make && make install
    

答案 1 :(得分:10)

Clang(x86x86_64)和LLVM(x86x86_64)目前可用作Cygwin软件包。

安装Cygwin软件包可以减轻您的麻烦

答案 2 :(得分:3)

你想开发llvm / clang还是用llvm / clang开发?对于后一种情况,为什么不从cygwin存储库安装llvm-3.1 / clang二进制文件?它们在我的Windows 7上运行得很好。