正在编译具有依赖项的PIN工具

Compiling PIN tool with dependencies

本文关键字:PIN 工具 依赖 编译      更新时间:2023-10-16

正如标题所述,我正在寻找一种方法,使编译我的PIN工具具有一些依赖关系。例如,如果我在我的PIN工具中#include "somefile.h",并生成一些对象文件g++ -c somefile.cpp,我如何链接我的对象文件以使用我的PIN文件进行编译,以便在我的PIN工具中使用它的功能?

所以我能够在这里找到一些关于更改PIN网站下的"makefile.rules"的文档。对于我的情况,下面这6行将被添加到"makefile.rules"的末尾

$(OBJDIR)"somefile"$(OBJ_SUFFIX): "somefile".cpp "somefile".h
    $(CXX) $(TOOL_CXXFLAGS) $(COMP_OBJ)$@ $<
$(OBJDIR)"PinFile"$(OBJ_SUFFIX): "pin_tool".cpp
    $(CXX) $(TOOL_CXXFLAGS) $(COMP_OBJ)$@ $<
$(OBJDIR)"pin_tool"$(PINTOOL_SUFFIX): $(OBJDIR)"somefile"$(OBJ_SUFFIX) $(OBJDIR)"PinFile"$(OBJ_SUFFIX) "somefile".h
    $(LINKER) $(TOOL_LDFLAGS_NOOPT) $(LINK_EXE)$@ $(^:%.h=) $(TOOL_LPATHS) $(TOOL_LIBS)

从一个make文件到另一个make文档,唯一会改变的就是我在引号中的单词。请注意,在实际的"makefile.rules"中,被引用的单词周围不应该有引号

在"makefile.rules"的末尾需要一个新规则:

$(OBJDIR)YourPinToolMainFile$(PINTOOL_SUFFIX): $(OBJDIR)YourPinToolMainFile$(OBJ_SUFFIX) $(OBJDIR)somefile$(OBJ_SUFFIX)
$(LINKER) $(TOOL_LDFLAGS) $(LINK_EXE)$@ $^ $(TOOL_LPATHS) $(TOOL_LIBS)