具有依赖性的英特尔Pin

时间:2017-10-24 21:13:32

标签: c++ c makefile intel-pin

我使用Intel Pin编译C源代码和头文件以及我的c ++ pintool。为此,我在makefile.rules文件中添加了以下makefile规则 -

# Build the intermediate object file.
$(OBJDIR)testcpp$(OBJ_SUFFIX): testcpp.cpp
    $(CXX) $(TOOL_CXXFLAGS_NOOPT) $(COMP_OBJ)$@ $<

# Build the intermediate object file.
$(OBJDIR)test$(OBJ_SUFFIX): test.c test.h
    $(CC) $(TOOL_CXXFLAGS) $(COMP_OBJ)$@ $<

# Build the tool as a dll (shared object).
$(OBJDIR)testcpp$(PINTOOL_SUFFIX): $(OBJDIR)test$(OBJ_SUFFIX) test.h
    $(LINKER) $(TOOL_LDFLAGS_NOOPT) $(LINK_EXE)$@ $(^:%.h=) $(TOOL_LPATHS) $(TOOL_LIBS)

testcpp.cpp是我在C ++中的pintool,test.c和test.h是我的C源文件和头文件。

我正在使用此链接中提到的规则 - https://software.intel.com/sites/landingpage/pintool/docs/97438/Pin/html/index.html#MAKEFILES

我从文件makefile.unix.config中删除了这个选项 -

TOOL_CXXFLAGS_NOOPT += -fno-rtti

因为此选项专门用于C ++,而C不使用它。由于我使用相同的编译器选项编译它们,因此删除该选项似乎比为C和C ++添加新规则更好

我可以使用命令&#34; make&#34;来制作我的程序。它生成了一个带有目标文件test.o和testcpp.so的目录obj-intel64,所以我的编译工作正常。

为了执行我的程序,我使用以下命令 -

$PIN_ROOT/pin -t obj-intel64/testcpp.so -- my_application_program

我得到以下输出 -

E: Unable to load obj-intel64/testcpp.so

文件testcpp.so出现在obj-intel64目录中,但我无法加载它。 关于我哪里出错的任何提示?

0 个答案:

没有答案