如何编写LLVM传递?

时间:2015-04-15 15:20:15

标签: llvm

我正在编写一个LLVM传递,就在http://llvm.org/docs/WritingAnLLVMPass.html#basic-code-required之后。

我完成了Makefilesource code但是,当我来make时:

Now that it’s all together, compile the file with a simple “gmake” command in the local directory and you should get a new file “Debug+Asserts/lib/Hello.so” under the top level directory of the LLVM source tree (not in the local directory).

报道

../../../Makefile.common:61: ../../../Makefile.config: No such file or directory ../../../Makefile.common:69: /Makefile.rules: No such file or directory make: *** No rule to make target '/Makefile.rules'. Stop.

我没有更改根目录中的任何配置文件。我的根目录中没有Makefile.config,但有一个名为Makefile.config.in的文件。 Makefile.common出现在根目录中。

1 个答案:

答案 0 :(得分:4)

我不想成为那个告诉你的人,但我认为在进入编译器开发之前你需要先掌握基础知识:

  

PassManager类获取传递列表,确保正确设置其先决条件,然后安排传递以高效运行。所有运行传递的LLVM工具都使用PassManager来执行这些传递。

  • makefile是一种定义软件如何通过编译器,链接器,安装脚本等构建的机制。它的外观完全取决于您计划如何实现软件。在你的情况下,你应该确定自己的现有通行证。实际上,http://llvm.org/docs/WritingAnLLVMPass.html#setting-up-the-build-environment对如何设置makefile有一个相当详细的解释,包括一个非常简单的模板

    # Makefile for hello pass
    # Path to top level of LLVM hierarchy
    LEVEL = ../../..    
    # Name of the library to build
    LIBRARYNAME = Hello    
    # Make the shared library become a loadable module so the tools can
    # dlopen/dlsym on the resulting library.
    LOADABLE_MODULE = 1
    # Include the makefile implementation stuff
    include $(LEVEL)/Makefile.common
    

如果您不理解,那么您必须阅读一些现有的Makefile或制作文档。

总而言之,我认为编写LLVM传递可能不是我开始使用的东西,如果不习惯这些标准工具,但我建议只是潜入LLVM源代码树来获取感觉。练习让大师!