如何在cygwin上构建llvm和clang

如何在cygwin上构建llvm和clang,cygwin,llvm-clang,Cygwin,Llvm Clang,我可以从源代码在cygwin上构建LLVM和clang吗 构建LLVM和Clang需要多长时间?因为我尝试在VirtualBox上构建它们,需要大约2个小时。您想开发llvm/clang还是使用llvm/clang开发?对于后一种情况,为什么不从cygwin存储库安装llvm-3.1/clang二进制文件?它们在我的Windows 7上运行得很好。Clang(,)和LLVM(,)目前作为Cygwin软件包提供 安装Cygwin软件包将大大减少您的麻烦在这方面花了一些精力,我想分享我的一些发现可能

我可以从源代码在cygwin上构建LLVM和clang吗


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

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

Clang(,)和LLVM(,)目前作为Cygwin软件包提供


安装Cygwin软件包将大大减少您的麻烦

在这方面花了一些精力,我想分享我的一些发现可能是值得的。我设法在Cygwin 1.7.28(x86)上构建了Clang+LLVM 3.4

Cygwin特异性 修复机器整数类型 最近对Cygwin的更新似乎破坏了Clang使用的一个系统头。服务器上提供了不完整的修补程序。这是

包含C++标准库的目录

CLAN+++(3.4)仍然为C++标准库的包含目录(它依赖于GCC提供的目录)硬编码。如果路径不正确(如CygWin上经常出现的情况),则当包含任何C++头(如<代码> <代码> >时,将遇到问题。解决此问题的两种可能方法:

  • 您可以将正确的路径添加到代码中。这是相当不灵活的,因为每次更改时都必须重新编译Clang++并且在Cygwin上需要很长时间。如果要执行此操作,可以在第389行的
    clang/lib/Frontend/InitHeaderSearch.cpp
    中找到代码

  • 或者,您可以在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的目录移动到LLVM的
    tools
    子目录中

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

    ./configure --enable-optimized
    
    Clang更喜欢选择自己作为编译器,因此如果您还没有一个可用的Clang安装,请使用
    CC
    CXX
    环境变量强制它使用GCC

  • 如果一切顺利,您可以开始构建和安装,这将构建clang和llvm:

    make && make install
    

  • 它们叫什么?因为我找不到64位。@cmcdragokai-我为您添加了直接链接;看起来它现在可用于64位。如何在windows上为clang提供libstdc++呢。