编译 LLVM IR 时使用 LLVM headers

Using LLVM headers when compiling LLVM IR

我正在尝试将 C 代码片段编译成 LLVM IR。 我需要 #include 适当的 LLVM header 文件,例如 Module.h (#include "llvm/Module.h")。 对于编译,我使用:

c++ -g prog.cpp llvm-config-10 --cxxflags --ldflags --libs core -o prog

但这给了我一个错误:

c++ -g prog.cpp llvm-config-10 --cxxflags --ldflags --libs core -o 程序 prog.cpp:1:10: 致命错误: Module.h: 没有那个文件或目录

llvm-config-10 --cxxflags 的输出是

-I/usr/lib/llvm-10/include ...等

我在两个地方有 Module.h header:

/usr/include/llvm-10/llvm/IR/Module.h

/usr/lib/llvm-10/include/llvm/IR/Module.h

那么,为什么“-I/usr/lib/llvm-10/include”不起作用?

它不应该在 .../llvm/IR 目录中找到 header Module.h 吗?

提前致谢!

#include "llvm/Module.h 替换为 #include "llvm/IR/Module.h。 另外,如果你想将 C 代码编译成 LLVM IR,你可以使用命令 clang -S -emit-llvm source.c,这将创建一个包含 LLVM IR 的 source.ll 文件。