代码之家  ›  专栏  ›  技术社区  ›  Shivanshu Goyal

LLVM 6.0.0 HowToUseJit示例程序seg故障

  •  0
  • Shivanshu Goyal  · 技术社区  · 6 年前

    我在Windows for x64上将LLVM 6.0.0编译为DLL,并尝试运行HowToUseJit示例程序,但它出现了seg故障。你怎么修?

    示例的源代码: https://github.com/llvm-mirror/llvm/blob/release_60/examples/HowToUseJIT/HowToUseJIT.cpp

    本例中,该线路导致seg故障:

    GenericValue gv = EE->runFunction(FooF, noargs);
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Shivanshu Goyal    6 年前

    我认为HowToUseJit的例子是不完整的。要使其正常工作,您需要进行以下更改:

    添加以下内容:

    #include "llvm/ExecutionEngine/MCJIT.h"
    

    这将调用一些静态初始化函数,JITting在LLVM中工作需要这些函数。

    在运行JITted函数之前,还需要在main中添加对该函数的调用:

    LLVMInitializeNativeAsmPrinter();
    

    该功能是为目标机器生成装配所必需的。