【问题标题】:Including llvm, Value.h not found包括 llvm、Value.h 未找到
【发布时间】:2014-10-07 23:13:09
【问题描述】:

我正在尝试使用 llvm 编译一个程序,遵循本教程 writing a toy compiler,但是当我尝试编译时,我不断得到一个

'fatal error: 'llvm/Value.h' file not found'

我正在使用 llvm-config --cxxflags,它为编译器提供了目录

-I/usr/local/Cellar/llvm/3.5.0/include

对于包含。 Value.h 似乎实际上在目录中

/usr/local/Cellar/llvm/3.5.0/include/IR, 

但如果我在包含中添加 IR,那么缺少的标题只会在不同的文件中弹出。

如果有帮助,我正在使用的完整 llvm-config 命令是,

llvm-config --libs core jit native --cxxflags --ldflags

它的输出是,

-I/usr/local/Cellar/llvm/3.5.0/include  -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -O3  -std=c++11 -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-common -Woverloaded-virtual -Wcast-qual
-L/usr/local/Cellar/llvm/3.5.0/lib
-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMJIT -lLLVMExecutionEngine -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMMC -lLLVMCore -lLLVMSupport

我正在使用 osx 10.9.5 和 llvm 3.5 与 homebrew 一起安装。

任何建议将不胜感激,谢谢。

【问题讨论】:

    标签: macos llvm


    【解决方案1】:

    我在阅读相同的教程时遇到了同样的问题。这是我在 Ubuntu 14.04 上修复它的方法:

    1. 我从根目录中搜索了Value.h 文件。

      $ sudo find . -name Value.h
      ./usr/include/llvm-3.4/llvm/IR/Value.h
      ./usr/lib/llvm-3.4/include/lldb/Core/Value.h
      
    2. 我将node.h文件中的include语句改为

      #include <llvm/IR/Value.h>
      

    【讨论】:

    • 谢谢,解决了这个错误。不过现在得到更多。我开始认为我的 llvm 版本可能与教程中的不同。
    • 当我偶然发现您的问题时,我恰好正在阅读相同的教程。我也有很多关于教程过时的问题。如果我解决了所有问题,我将提供一篇博文并在此处链接。
    • 我找到了。代码已更新,可在github.com/lsegal/my_toy_compiler.git 找到。我确实必须将行 #include &lt;llvm/IR/Constants.h&gt; 添加到 codegen.h 文件中,但除此之外,Makefile 对我来说工作得很好。
    • 谢谢,这消除了我的包含错误。仍然无法让它工作。你用的是什么版本的 llvm?
    • 我对 clang 和 llvm 都使用 3.4 版。那是最新的稳定版本。这只是一个建议,但我在 Vagrant 实例中进行所有开发。我刚刚创建了一个干净的 Ubuntu VM 和 apt-get installed llvm.org/apt 上的安装(稳定分支)上的所有内容。我这样做是为了消除 Mac OS X 中不断出现的所有交叉编译器冲突。
    【解决方案2】:
    #include "values.h"
    /* instead of */
    #include <values.h>
    

    或者你没有 values.h 而你需要:

    #include <limits.h>
    #include <float.h>
    

    http://www.compbio.dundee.ac.uk/pipermail/discuss/2006-January/000025.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 2020-11-22
      • 2019-12-27
      • 1970-01-01
      • 2017-06-02
      相关资源
      最近更新 更多