首页 > 解决方案 > 编译 LLVM IR 时使用 LLVM 头文件

问题描述

我正在尝试将 C 代码片段编译成 LLVM IR。我需要#include 适当的 LLVM 头文件,例如 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 prog.cpp:1:10:致命错误:Module.h:没有这样的文件或目录

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

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

我在两个位置有 Module.h 标头:

/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 目录中找到标头 Module.h 吗?

提前致谢!

标签: c++llvm-ir

解决方案


而不是#include "llvm/Module.hput #include "llvm/IR/Module.h。此外,如果你想将 C 代码编译成 LLVM IR,你可以使用命令clang -S -emit-llvm source.c,它会创建一个包含 LLVM IR 的 source.ll 文件。


推荐阅读