如何自托管 Clang?
Posted
技术标签:
【中文标题】如何自托管 Clang?【英文标题】:How to Self-Host Clang? 【发布时间】:2014-09-07 23:43:34 【问题描述】:谁能告诉我如何将 Clang 编译器编译成 LLVM 字节码(即自托管 Clang)?我想这样做的原因是我可以获取生成的 LLVM 字节码,然后使用 Emscripten 生成 C 到 javascript 编译器。
【问题讨论】:
使用 -flto 然后将生成的 IR 模块收集到一个大的单个模块中。 【参考方案1】:您可以使用-emit-llvm
命令行标志和-c
标志将clang 输出到LLVM 字节码。 (如果您使用 -S
标志而不是 -c
,您将获得 LLVM 字节码的文本表示。)您无需将 clang 编译为 LLVM 字节码即可。
如果您想尝试在浏览器中运行 clang 本身,则需要将所有 clang 编译为 LLVM 字节码,然后使用 llvm-link
将目标文件链接在一起。然后你需要弄清楚如何让编译的编译器访问它需要的系统头文件。我不知道是否有所有这些的构建选项,但我从未在./configure
选项中看到任何内容,所以我怀疑没有。但它可能存在。
【讨论】:
***.com/questions/12479458/… 有一个类似的线程,但我是 clang 和一般编译的新手,所以我不知道如何采用它来将 clang 编译到 LLVM。你觉得你能帮我稍微修改一下这段代码来编译成 LLVM 吗? 正如我在回答中所说,这不是一个简单的过程。我没有提到如果你想在浏览器中完成所有这些,你还需要自己构建 emscripten,而且结果很可能大得不切实际。你确定你需要这样做吗?以上是关于如何自托管 Clang?的主要内容,如果未能解决你的问题,请参考以下文章