【问题标题】:Efficiently using LLVM through various platforms通过各种平台高效使用 LLVM
【发布时间】:2019-05-30 03:26:20
【问题描述】:

我正在使用 LLVM(C#、.NET Core)实现一种语言。我希望这种语言具有跨平台兼容性,因为它的最终可执行文件是针对本地计算机编译的,例如 Windows 10 x64 或 Linux。

为了实现这一点,我目前的策略是实现一个包装 CLI 实用程序,该实用程序使用我的语言的编译器库(它使用 LLVM),以及用于各种平台的打包 LLVM 可执行文件。

所以基本上,我的 CLI 工具会自动调用 LLVM 的工具(llcllilld-link 等)。

但是,这意味着我必须打包为我想要定位的每个平台编译的 LLVM 工具(以及一些库,例如用于类 Unix 系统的 libc,以确保版本兼容性和一致性?)。

所以,如果我想针对以下平台:

ubuntu16, ubuntu14, armv7a, windows x86_64, debian8, ...

我确实必须以某种方式获取他们相应的 LLVM 编译的可执行工具。

语言库、CLI 实用程序和 LLVM 工具被压缩(“打包”)为一个简单的 ZIP 文件。

我倾向于完全托管的系统,所以我想避免强迫用户在他们的本地机器上安装 LLVM 工具。

我是否应该将语言/编译器打包到相应平台使用的标准打包方法中,例如。 .RPM 用于 Fedora 等?

是否有替代的、有效的(通用的?)方法来实现这一点,特别是不需要在包中包含 LLVM 工具和库?

其他跨平台编译器如何解决这个问题,或者它只是 LLVM 特定的?

【问题讨论】:

    标签: linux windows llvm packaging


    【解决方案1】:

    您可以将整个 LLVM 静态链接到您的 .NET 应用程序中,并执行这些工具在您的编译器中执行的所有任务。这实际上是 clang 所做的——除了它使用外部链接器。

    【讨论】:

      猜你喜欢
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 2011-05-06
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多