如何在cygwin上构建llvm和clang

Han*_*ing 8 cygwin llvm-clang

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

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

Ruf*_*ind 15

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

Cygwin的专用

修复机器整数类型

最近对Cygwin的更新似乎打破了Clang使用的系统头之一.Cygwin邮件列表中提供了一个不完整的补丁.这是完整的补丁.

包含C++标准库的目录

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

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

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

    1. 通过执行以下命令识别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文档中的所有内容都适用于此处.

  1. 下载源代码.即使您只需要Clang,您仍然需要LLVM源代码.

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

    mv clang-X.Y llvm-X.Y/tools/clang
    
    Run Code Online (Sandbox Code Playgroud)
  3. 首先配置:

    ./configure --enable-optimized
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    make && make install
    
    Run Code Online (Sandbox Code Playgroud)


She*_*lva 9

Clang(x86,x86_64)和LLVM(x86,x86_64)目前以Cygwin软件包的形式提供.

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


jic*_*chi 3

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