【问题标题】:Link C against object from LLVM将 C 链接到 LLVM 中的对象
【发布时间】:2021-12-27 14:43:12
【问题描述】:

我一直在玩 LLVM,并试图这样做:

假设我有一个项目的位码 (input.bc),我可以使用 llc 将其编译为目标文件 (input.o)。

现在,如果我编写一个单独的文件 (funcdefs.c),它使用 input.o 中的一些符号定义,是否可以使用 input.o 作为包含将 funcdefs.c 编译为它自己的 IR 表示?

我已经尝试过clang -c -emit-llvm input.o funcdefs.c,但我没有看到任何看起来像是在寻找丢失的符号/全局定义的东西。

感谢您的指导!

【问题讨论】:

  • 你能为你的 funcdefs 或可重现的例子提供一个来源吗?

标签: c llvm static-linking


【解决方案1】:

您需要先为 funcdefs.c 创建一个目标文件,然后将其与 input.o 链接>.

clang -c funcdefs.c -o funcdefs.o
clang funcdefs.o input.o

你可以把它们加入

clang funcdefs.c input.o

【讨论】:

    【解决方案2】:

    要使用 input.o 文件中的函数,您需要创建 input.h 文件并在其中定义函数。要创建此类文件,请参阅 How to call the functions in another compiled *.o object files in CHow do I find out what all symbols are exported from a shared object?

    【讨论】:

      猜你喜欢
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多