Я провожу некоторые исследования параллельной обработки, и мне нужно протестировать вывод счетчика с помощью различных API параллелизации. Каждый раз, когда я пытаюсь сделать свой код, я получаю undefined reference to 'PAPI_...
,
Я использую PAPI 5.1.1 и уже знаю, какие каталоги libpapi.a
а также papi.h
У меня не было проблем с запуском этого Makefile на другом ПК, но на другом, который мне нужен, похоже, он не работает. Вот что у меня
CC=g++
CFLAGS="-fopenmp"LIB=/usr/local/lib/libpapi.a -lm -lpthread
INCLUDE=-I/usr/local/include
all: test
echo "Done"test: testPandP.cpp
${CC} ${CFLAGS} ${LIB} ${INCLUDE} -o test testPandP.cpp
clean:
${RM} *.o test
Я читал другие посты, спрашивая о неопределенной ссылке, но все, что я видел, только предлагали использовать -L/usr/local/lib
или же /usr/local/lib/libpapi.a
, что я уже делаю.
У кого-нибудь есть другие предложения?
В зависимости от версии вашего компоновщика, порядок библиотек может доставить вам неприятности. Вероятно, поэтому вы можете компилировать на некоторых машинах, но не на других.
Изменение порядка компиляции должно сделать это:
test: testPandP.cpp
${CC} ${CFLAGS} ${INCLUDE} -o test testPandP.cpp ${LIB}
Дальнейшая информация в этом вопросе о порядке связывания.
Других решений пока нет …