如何编写LLVM通行证?

如何编写LLVM通行证?,llvm,Llvm,我正在写一个LLVM通行证,就在后面 我已经完成了Makefile,源代码,但是,当我来做make时: 现在所有这些都在一起了,在本地目录下用一个简单的“gmake”命令编译该文件,您应该在LLVM源代码树的顶级目录下(不在本地目录下)得到一个新文件“Debug+Asserts/lib/Hello.so”。 据报道 。/../../../Makefile.common:61:../../../Makefile.config:没有这样的文件或目录 ../../../Makefile.common:

我正在写一个LLVM通行证,就在后面

我已经完成了
Makefile
源代码
,但是,当我来做
make
时:

现在所有这些都在一起了,在本地目录下用一个简单的“gmake”命令编译该文件,您应该在LLVM源代码树的顶级目录下(不在本地目录下)得到一个新文件“Debug+Asserts/lib/Hello.so”。

据报道

。/../../../Makefile.common:61:../../../Makefile.config:没有这样的文件或目录
../../../Makefile.common:69:/Makefile.rules:没有这样的文件或目录
make:**没有规则来生成目标'/Makefile.rules'。停止。


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

我不想告诉您,但我认为您需要在深入开发编译器之前了解基本知识:

  • 有很多文档,您一定要阅读,包括有关经理的信息:
PassManager类获取过程列表,确保正确设置其先决条件,然后安排过程以高效运行。所有运行过程的LLVM工具都使用PassManager来执行这些过程

  • makefile是一种定义如何通过编译器、链接器、安装脚本等构建软件的机制。其外观完全取决于您计划如何实现软件。在你的情况下,你一定要在现有的通行证上确定自己的方向。事实上,它对如何设置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源代码树来体会一下。熟能生巧

正如您所知,教程/示例/库/网站/API的请求在这里特别离题。你能修改这个问题来说明你的问题吗?谢谢。我第一次尝试在llvm/lib/Transformations/Hello中执行
make
,但它报告说.././Makefile.config未找到^@xwang:请将其编辑到您的问题中,根据需要添加更多详细信息。这将使问题更接近主题。