我使用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目录中,但我无法加载它。 关于我哪里出错的任何提示?