如何自托管 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何备份 Azure 自定义托管映像

GitHub 操作自托管运行器如何工作?

如何在自托管 Web API 应用程序中配置 OData 端点

如何删除 Gitlab 自托管中的旧工件?

如何在 asp.net 自托管 API 中启用 CORS?

如何在自托管 Parse 服务器和仪表板中配置或启用分析