通过各种平台有效使用LLVM

时间:2019-05-30 03:26:20

标签: linux windows llvm packaging

我正在使用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?

1 个答案:

答案 0 :(得分:1)

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