如何使用 llvm 库

How to use llvm libraries

我在一个由一些 C++ 团队组成的项目中工作。每个团队都提供库,我们的团队正在将这些库集成到前端应用程序中。

该应用程序是跨平台的,这意味着其他团队必须提供为不同 platforms/CPU architecture/configuration 编译的相同(静态)库。例如。我们有 Visual Studio 2015/2013、32 位/64 位、linux、Debug/Release 等

减少这些静态库的数量会很好 "manifests",所以我正在调查 Clang/LLVM。这个想法是将静态库编译成 LLVM 位码并使用 llvm-ar 工具创建一个 llvm 静态库。当我们必须为特定平台制作二进制文件时,我们将使用 llc(LLVM 平台编译器)创建本机代码静态库并使用平台链接器进行链接。

问题:

从特定于目标和特定于平台的语言 (C/C++) 生成的 LLVM IR 不会是目标中立的。考虑类型大小、对齐方式、ABI 要求等。更不用说像预处理器这样的纯源代码功能了。所以,不行,你想的办法根本行不通。

有关更多信息,请参阅 LLVM bitcode cross-platform