2016-05-02 72 views
2

正如標題所述,我正在尋找一種方法來編譯我的PIN工具並提供一些依賴關係。因此,例如,如果我在我的PIN工具中使用了#include "somefile.h",並生成了一些目標文件g++ -c somefile.cpp,那麼如何鏈接我的目標文件以使用我的PIN工具進行編譯,以便我可以在我的PIN工具中使用它的功能?編譯與依賴關係的PIN工具

+0

請注意,目標文件必須使用與Pin本身相同的運行時進行編譯。我建議您查看一些Pin工具包makefiles,以查看如何生成obj文件並向您的Pintool生成文件添加類似的行。 – nitzanms

回答

3

所以我能找到下PIN的網站here改變「makefile.rules」一些文檔。對於我的情況,下面這6行將被添加到「makefile.rules」的末尾。

$(OBJDIR)"somefile"$(OBJ_SUFFIX): "somefile".cpp "somefile".h 
    $(CXX) $(TOOL_CXXFLAGS) $(COMP_OBJ)[email protected] $< 

$(OBJDIR)"PinFile"$(OBJ_SUFFIX): "pin_tool".cpp 
    $(CXX) $(TOOL_CXXFLAGS) $(COMP_OBJ)[email protected] $< 

$(OBJDIR)"pin_tool"$(PINTOOL_SUFFIX): $(OBJDIR)"somefile"$(OBJ_SUFFIX) $(OBJDIR)"PinFile"$(OBJ_SUFFIX) "somefile".h 
    $(LINKER) $(TOOL_LDFLAGS_NOOPT) $(LINK_EXE)[email protected] $(^:%.h=) $(TOOL_LPATHS) $(TOOL_LIBS) 

會從一個make文件更改爲另一個唯一的事情是我加上引號的話。請注意,引用的單詞在實際的「makefile.rules」中不應包含引號。

2

你在你的「makefile.rules」的結尾需要一個新的規則:

$(OBJDIR)YourPinToolMainFile$(PINTOOL_SUFFIX): $(OBJDIR)YourPinToolMainFile$(OBJ_SUFFIX) $(OBJDIR)somefile$(OBJ_SUFFIX) 
$(LINKER) $(TOOL_LDFLAGS) $(LINK_EXE)[email protected] $^ $(TOOL_LPATHS) $(TOOL_LIBS)