构建使用外部库的Pin工具时出错

时间:2017-12-08 17:04:13

标签: compilation shared-libraries dynamic-linking intel-pin

我在头文件imp.h中声明了一个函数foo(),并在imp.c中实现了它。然后我生成了一个名为libimp.so的共享库,在我的Pin工具中我调用了foo()。

为了将该工具与这个新库链接,我在其目录中添加了以下定义到makefile.rules:

TOOL_CXXFLAGS += -I/path/to/imp.h
TOOL_LPATHS += -L/path/to/libimp.so
TOOL_LIBS += -limp

我还将LD_LIBRARY_PATH设置为/path/to/libimp.so。但是,在运行时,如果我使用foo(),将收到以下错误:

dlopen failed. library "libimp.so" not found.

当我从一个简单的测试程序调用它时,库是可以的。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

我还将LD_LIBRARY_PATH设置为/path/to/libimp.so

如果libimp.so的完整路径字面 /path/to/libimp.so,那么LD_LIBRARY_PATH的正确值为/path/to不是 /path/to/libimp.so

(从您的问题中不清楚您是否理解这一点。)

您可能希望将您的pintool与-Wl,--rpath=/path/to相关联,这样您就不必设置LD_LIBRARY_PATH