【发布时间】:2019-05-30 03:26:20
【问题描述】:
我正在使用 LLVM(C#、.NET Core)实现一种语言。我希望这种语言具有跨平台兼容性,因为它的最终可执行文件是针对本地计算机编译的,例如 Windows 10 x64 或 Linux。
为了实现这一点,我目前的策略是实现一个包装 CLI 实用程序,该实用程序使用我的语言的编译器库(它使用 LLVM),以及用于各种平台的打包 LLVM 可执行文件。
所以基本上,我的 CLI 工具会自动调用 LLVM 的工具(llc、lli、lld-link 等)。
但是,这意味着我必须打包为我想要定位的每个平台编译的 LLVM 工具(以及一些库,例如用于类 Unix 系统的 libc,以确保版本兼容性和一致性?)。
所以,如果我想针对以下平台:
ubuntu16, ubuntu14, armv7a, windows x86_64, debian8, ...
我确实必须以某种方式获取他们相应的 LLVM 编译的可执行工具。
语言库、CLI 实用程序和 LLVM 工具被压缩(“打包”)为一个简单的 ZIP 文件。
我倾向于完全托管的系统,所以我想避免强迫用户在他们的本地机器上安装 LLVM 工具。
我是否应该将语言/编译器打包到相应平台使用的标准打包方法中,例如。 .RPM 用于 Fedora 等?
是否有替代的、有效的(通用的?)方法来实现这一点,特别是不需要在包中包含 LLVM 工具和库?
其他跨平台编译器如何解决这个问题,或者它只是 LLVM 特定的?
【问题讨论】:
标签: linux windows llvm packaging