我正在一个由一些C ++团队组成的项目中工作。每个团队都提供库,我们的团队正在将这些库集成到前端应用程序中。
应用程序是跨平台的,因此这意味着其他团队必须提供针对不同平台/ CPU架构/配置编译的相同(静态)库。例如。我们有Visual Studio 2015 / 2013,32bit / 64bit,linux,Debug / Release等。
减少这些静态库"清单"的数量会很好,所以我正在研究Clang / LLVM。这个想法是将静态库编译成LLVM bitcode,并使用llvm-ar工具创建llvm静态库。当我们必须为特定平台制作二进制文件时,我们将使用llc(LLVM平台编译器)来创建本机代码静态库并与平台链接器进行链接。
问题:
答案 0 :(得分:1)
从特定于目标的语言和特定于平台的语言(C / C ++)生成的LLVM IR不会是目标中立的。考虑类型大小,对齐,ABI要求等。更不用说像预处理器这样的纯源代码功能。所以,不,你想到的方法根本不起作用。
有关详情,请参阅LLVM bitcode cross-platform。