我正在编写一个LLVM传递,就在http://llvm.org/docs/WritingAnLLVMPass.html#basic-code-required之后。
我完成了Makefile
,source 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
出现在根目录中。
答案 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源代码树来获取感觉。练习让大师!