我正在使用LLVM (C#,.NET核心)实现一种语言。我希望这种语言具有跨平台兼容性,因为它的最终可执行文件是针对本地计算机编译的,例如Windows10Linux或x64。
为此,我当前的策略是实现一个包装器CLI实用程序,它使用我的语言的编译器库(它使用LLVM),以及用于各种平台的打包的LLVM可执行文件。
因此,基本上,我的CLI工具会自动调用LLVM的工具(llc、lli、lld-link等)。
然而,这意味着我必须打包为我想要面向的每个平台编译的LLVM工具(以及一些库,比如libc for Unix-like system,以确保版本兼容性和一致性?)。
因此,如果我想要针对以下平台:
ubuntu16, ubuntu14, armv7a, windows x86_64, debian8, ...从字面上讲,我必须以某种方式获得它们相应的LLVM编译的可执行工具。
语言库、CLI实用程序和LLVM工具被压缩(“打包”)到一个简单的ZIP文件中。
我倾向于使用完全托管的系统,因此我希望避免强迫用户在其本地机器上安装LLVM工具。
我是否应该将语言/编译器打包到相应平台使用的标准打包方法上,例如。用于Fedora等的.RPM?
有没有替代的,有效的(通用的?)方法来实现这一点,特别是不需要在包中包含LLVM工具和库?
其他跨平台编译器是如何解决这个问题的,或者它只是特定于LLVM的?
发布于 2019-05-30 19:42:29
您可以将整个LLVM静态地链接到您的.NET应用程序中,并执行这些工具在您的编译器中执行的所有任务。实际上,这就是clang所做的--只不过它使用了外部链接器。
https://stackoverflow.com/questions/56371219
复制相似问题