Я использую одну программную платформу, загруженную с чемпионата по предварительной выборке данных (http://www.jilp.org/dpc/prefetching_framework_description.html). Все работает нормально, но каждый раз, когда я пытался вызвать API, фреймворк при условии, что система выдает какую-то ошибку.
Например, в файле interface.h он предоставляет один API:
void SetPrefetchBit (уровень UINT32, CacheAddr_t addr);
Я называю это в моих кодах. Коды могут быть скомпилированы и успешно связаны. Но когда я запускаю код, он выдает ошибку:
PREF_KIT / run /../ pin / intel64 / bin / pinbin: ошибка поиска символа: / PREF_KIT / run /../ bin / CMPsim.usetrace: неопределенный символ: _Z14SetPrefetchBitjy
Я действительно озадачен ошибкой. Поскольку коды могут быть скомпилированы и правильно связаны с предоставленной статической библиотекой, это означает, что API должен быть предоставлен. Тогда на что указывает ошибка?
Любое предложение или рекомендация приветствуется. заранее спасибо
У меня точно такая же проблема. Я работаю на 64-битной Ubuntu и могу нормально скомпилировать, но при запуске я получаю ту же ошибку выше. Когда я бегу нм используя следующую команду:
nm libCMPsim64.a | c++filt | grep GetPrefetch
Я понял, что в самой библиотеке есть неопределенная ссылка …
0000000000001790 T GetPrefetchBit(unsigned int, unsigned long)
U CACHE::GetPrefetchBit(unsigned long, unsigned int)
0000000000000000 r GetPrefetchBit(unsigned int, unsigned long)::__PRETTY_FUNCTION__
00000000000003b0 T CACHE::GetPrefetchBit(unsigned long, unsigned int)