9

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

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

4

3 回答 3

16

在为此付出了一些努力后,我认为分享我的一些发现可能是值得的。我设法在 Cygwin 1.7.28 (x86) 上构建了 Clang + LLVM 3.4

Cygwin 特定的

修复机器整数类型

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

包含 C++ 标准库的目录

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

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

  • 或者,您可以在 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 安装程序安装 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
    
  3. 从配置开始:

    ./configure --enable-optimized
    

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

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

    make && make install
    
于 2014-02-17T04:17:19.003 回答
10

Clang ( x86 , x86_64 ) 和 LLVM ( x86 , x86_64 ) 目前可作为 Cygwin 包使用。

安装 Cygwin 包会减少很多麻烦

于 2013-01-12T08:54:50.787 回答
3

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

于 2012-11-21T17:38:28.453 回答