如何将dramsim2库接口与PINtool链接

时间:2016-06-08 15:53:35

标签: c++ config linker-errors

我想在开发的PINtool中使用DRAMSim2作为库接口。

我尝试熟悉包含dramsim_test.h的dramsim_test.cpp,其中包括DRAMSim.h(在特定目录中)。

如果我将这些文件放在我的PINtool的目录中并包含它们(除了.cpp。我使用PINtool中的代码)我得到一个链接器(我猜)错误:

undefined symbol: _ZN7DRAMSim23getMemorySystemInstanceERKSsS1_S1_S1_jPSs

PINtool有一个配置文件,可以写下这些:

## Libraries to link
ifeq ($(TARGET_OS),mac)
    APP_LIBS := -lm
else
    APP_LIBS := -Wl,--as-needed -lm
endif
DL_LIB :=
APP_LIB_ATOMIC := -latomic
APP_LIB_XED := -lxed
TOOL_LIBS := -lpin -lxed
SATOOL_LIBS := -lsapin -lxed
CXX_LIBS :=

dramsim示例的makefile有:

$(CXX) -g -o dramsim_test dramsim_test.cpp -I../ -L../ -ldramsim -Wl,-rpath=../

我想我必须在pintool配置文件中添加-ldramism选项,但我不知道如何。

我不熟悉链接器选项,配置文件等。如何链接它们?

更新:问题解决了。通过添加-ldramsim更改conf文件并且没有工作,我试图将libdramsim.so移动到allcache_v7.cpp的文件夹中并且没问题......

1 个答案:

答案 0 :(得分:1)

只需将ecmaVersion添加到-ldramsim变量即可。您还需要添加其路径。所以改变这一行:

TOOL_LIBS

TOOL_LIBS := -lpin -lxed

更新现在您已经成功构建了库,您几乎就在那里。您只需要确保动态链接器在加载时找到它。从理论上讲,这是从shell提示符中完成的:

TOOL_LIBS := -lpin -lxed -L/path/to/dramsim/ -ldramsim

如果仍然存在问题,请检查链接器是否可以解决它:

> export LD_LIBRARY_PATH=/path/to/dramsim:${LD_LIBRARY_PATH}
> #command to invoke binary that uses your library allcache_v7.so

这应该告诉您链接器是否可以解析libdramsin.so。在> ldd allcache_v7.so | grep dramsim 命令之前和之后尝试它 - 看看输出是否从“未找到”变为库的真实路径。