gpt4 book ai didi

c++ - 如何使用 llvm 库

转载 作者:行者123 更新时间:2023-11-28 05:22:22 24 4
gpt4 key购买 nike

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

应用程序是跨平台的,这意味着其他团队必须提供为不同平台/CPU 架构/配置编译的相同(静态)库。例如。我们有 Visual Studio 2015/2013、32 位/64 位、linux、调试/发布等。

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

问题:

  • 是否有更好的方法来实现我想要实现的目标?
  • llc 似乎不支持静态库的编译,只支持单独的翻译单元(.bc -> .o)。当然我可以提取每个单独的 bitcode 文件,将其组装成 native 目标文件并使用平台库管理器工具 (lib/ar) 制作静态库,但我想知道是否有更精简的解决方案。
  • gold 链接器似乎可以生成我需要的东西,但似乎仅限于 ELF 格式。我必须支持 Windows/Linux,也许还支持 IOS

最佳答案

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

参见 LLVM bitcode cross-platform了解更多信息。

关于c++ - 如何使用 llvm 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41210125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com