cygwin - 如何在 cygwin 上构建 llvm 和 clang

标签 cygwin llvm-clang

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

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

最佳答案

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

特定于 Cygwin

修复机器整数类型

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

包含 C++ 标准库的目录

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

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

  • 或者,您可以在 Clang 需要的地方创建一个符号链接(symbolic link)

    1. 通过执行以下命令来识别 Clang++ 搜索的目录:

      echo | clang++ -v -x c++ -
      

      你应该找到类似的东西

      ignoring nonexistent directory "/usr/lib/gcc/i686-pc-cygwin/X.Y.Z/include/c++"
      

      可能会有几个不同的版本号 X.Y.Z 。选择其中任何一个,然后创建指向正确位置的符号链接(symbolic link):

      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. Download the source 。即使您只需要 Clang,您仍然需要 LLVM 源代码。

  2. 解压 Clang 和 LLVM 后,将 Clang 的目录移至 tools LLVM 的子目录。

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

    ./configure --enable-optimized
    

    Clang 更喜欢选择自己作为编译器,因此如果您还没有安装可用的 Clang,请使用 CCCXX环境变量强制它使用 GCC。

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

    make && make install
    

关于cygwin - 如何在 cygwin 上构建 llvm 和 clang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297285/

相关文章:

c++ - 访问基类对象中的 protected 成员

git - 设置好Gitosis,但是无法clone

c++ - 在cygwin下链接makefile中的boost库

c - "warning : No new line at end of file"是什么意思?

c++ - 在LLVM中获取全局字符串值

python - 使用 Clang 绑定(bind)提取类型字符串

linux-kernel - bpf_printk() 的输出

c++11 - C++ 字符串到 LLVM IR

python - 在 cygwin/XP 下安装完整 Python 的最佳方式?

c - 在 Cygwin/MinGW 中安装/编译 - 如何设置包含 "path"? (符号链接(symbolic link)?)