c++ - 编译 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 吗?
提前致谢!
解决方案
而不是#include "llvm/Module.h
put #include "llvm/IR/Module.h
。此外,如果你想将 C 代码编译成 LLVM IR,你可以使用命令clang -S -emit-llvm source.c
,它会创建一个包含 LLVM IR 的 source.ll 文件。
推荐阅读
- javascript - 如何在 Reactjs 中将服务器端 Json 数据转换为 react-google-chart 格式
- python - Python Sqlite 无类型错误 - 如果查询在函数外执行则有效
- reactjs - 使用 Babel-cli 手动编译 React JSX
- php - 在第 32 行了解 ssssii
- scala - `A => List[B]` 可以转换成 `List[A => B]` 吗?
- python - 计算图像重叠的百分比
- python - 列表中的列表
- digital-ocean - 在 DigitalOcean 块存储上使用嵌入式数据库(RocksDB、BoltDB、BadgerDB)是否安全?
- delphi - Firemonkey中TBitmap的校验和
- php - 创建结帐 Session.php 404 未找到