【问题标题】:How to Self-Host Clang?如何自托管 Clang?
【发布时间】:2014-09-07 23:43:34
【问题描述】:

谁能告诉我如何将 Clang 编译器编译成 LLVM 字节码(即自托管 Clang)?我想这样做的原因是我可以获取生成的 LLVM 字节码,然后使用 Emscripten 生成 C 到 Javascript 编译器。

【问题讨论】:

  • 使用 -flto 然后将生成的 IR 模块收集到一个大的单个模块中。

标签: c clang llvm llvm-clang emscripten


【解决方案1】:

您可以使用-emit-llvm 命令行标志和-c 标志将clang 输出到LLVM 字节码。 (如果您使用 -S 标志而不是 -c,您将获得 LLVM 字节码的文本表示。)您无需将 clang 编译为 LLVM 字节码即可。

如果您想尝试在浏览器中运行 clang 本身,则需要将所有 clang 编译为 LLVM 字节码,然后使用 llvm-link 将目标文件链接在一起。然后你需要弄清楚如何让编译的编译器访问它需要的系统头文件。我不知道是否有所有这些的构建选项,但我从未在./configure 选项中看到任何内容,所以我怀疑没有。但它可能存在。

【讨论】:

  • stackoverflow.com/questions/12479458/… 有一个类似的线程,但我是 clang 和一般编译的新手,所以我不知道如何采用它来将 clang 编译到 LLVM。你觉得你能帮我稍微修改一下这段代码来编译成 LLVM 吗?
  • 正如我在回答中所说,这不是一个简单的过程。我没有提到如果你想在浏览器中完成所有这些,你还需要自己构建 emscripten,而且结果很可能大得不切实际。你确定你需要这样做吗?
猜你喜欢
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多