2016-06-08 5 views
1

Я хочу использовать DRAMSim2 в качестве интерфейса библиотеки в разработке PINtool.Как связать интерфейс библиотеки dramsim2 с PINtool

Я стараюсь быть знакомым с dramsim_test.cpp, который включает в себя dramsim_test.h, который включает в себя 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 := 

Makefile из dramsim примера имеет следующее:

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

Я полагаю, что мне нужно добавить где-нибудь в конфигурационном файле pintool параметр -ldramism, но я не знаю, как это сделать.

Я не знаком также с параметрами компоновщика, конфигурационными файлами и т. Д. Как я могу связать их?

ОБНОВЛЕНИЕ: Проблема решена. После изменения файла конф путем добавления -ldramsim и не работало, я пытался переместить libdramsim.so в папку allcache_v7.cpp и это нормально ...

ответ

1

Просто добавьте -ldramsim в переменную TOOL_LIBS. Вам также нужно будет добавить свой путь. Так измените строку:

TOOL_LIBS := -lpin -lxed 

к

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

UPDATE: Теперь, когда вы успешно построили свою библиотеку, вы почти там. Вам просто нужно убедиться, что он найден динамическим компоновщиком во время загрузки. В теории, это делается как следует из вашей командной строки:

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

Если это по-прежнему дает вам проблемы, проверьте, если компоновщик может разрешить его:

> ldd allcache_v7.so | grep dramsim 

Это должно сказать вам ли линкер может разрешить libdramsin.so или нет. Попробуйте до и после команды export ... - посмотрите, не изменился ли выход с чего-то типа «Не найден» на истинный путь библиотеки.

+0

благодарит вас за ответ ... но проблема все еще существует. Я изменил линию, которую вы сказали, и не работал. Я также попытался изменить это: CXX_LPATHS: = -I ../../../DRAMSim2/ -L ../../../DRAMSim2/ (пути верны, но я не знаю, как использовать -I и -L) – user1969182

+0

Можете ли вы построить свою сборку PINTool, чтобы она была подробной, поэтому она выводит командную строку (ы) компилятора, которые она использует, и делится этим? – Smeeheey

+0

'g ++ -DBIGARRAY_MULTIPLIER = 1 -Wall -Werror -Wno-unknown-pragmas -fno-stack-protector -DTARGET_IA32E -DHOST_IA32E -fPIC -DTARGET_LINUX -I ../../../ source/include/pin -I. ./../../source/include/pin/gen -I ../../../ extras/components/include -I ../../../ extras/xed-intel64/include - I ../../../ source/tools/InstLib -O3 -fomit-frame-pointer -fno-strict-aliasing -c -o obj-intel64/allcache_v7.o allcache_v7.cpp' – user1969182