' LLVM / IR / Constants.h'文件未找到

时间:2017-09-29 11:02:17

标签: c++ llvm llvm-clang

我正在尝试编写一个编译器,并且我正在使用 llvm(C ++ api)进行中间和最终代码生成。虽然在尝试执行命令时:

llvm.o: llvm.cpp llvm.h
    $(CPP) llvm.cpp -c -$(FLAGS) 

在我的make文件中我收到错误:

In file included from llvm.cpp:6:
./opt.h:5:10: fatal error: 'llvm/IR/Constants.h' file not found
#include <llvm/IR/Constants.h>
         ^~~~~~~~~~~~~~~~~~~~~
1 error generated.

我正在使用 Mac Os(Sierra版本10.12.6),并且我已经使用brew(brew install llvm)安装了llvm,所以我无法理解如何找到库文件。

我的 clang版本

bash-3.2$ clang --version
Apple LLVM version 9.0.0 (clang-900.0.37)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin 

我已经搜索了很多内容,但无法找到解决我问题的任何内容,任何帮助都值得赞赏!!!。

1 个答案:

答案 0 :(得分:2)

你的旗帜是什么?您需要提供链接器标志和标头搜索标志。

以下内容可以为您提供帮助:

llvm.o: llvm.cpp llvm.h
    $(CPP) llvm.cpp -c -$(FLAGS) `llvm-config --cxxflags --ldflags --libs`

请注意,没有任何参数的--libs会将您的二进制文件与所有LLVM库链接起来。

<强> UPD:

在MacOS上,llvm-config和其他工具没有添加到$PATH,因为它会覆盖系统编译器并且可能以某种方式阻塞你的系统。您需要使用完整路径,例如/usr/local/Cellar/llvm/3.9.0/bin/llvm-config。确保在这里使用正确的版本。

另外,请确保您的FLAGS实际已经过评估,而不是按原样粘贴到命令:

FLAGS=$(shell llvm-config --cxxflags --ldflags --libs)