Почему я получаю ошибку «Неопределенная ссылка», когда запускаю свой Makefile на некоторых компьютерах, но не на других?

Я провожу некоторые исследования параллельной обработки, и мне нужно протестировать вывод счетчика с помощью различных 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, что я уже делаю.

У кого-нибудь есть другие предложения?

2

Решение

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

Изменение порядка компиляции должно сделать это:

test: testPandP.cpp
${CC} ${CFLAGS} ${INCLUDE} -o test testPandP.cpp ${LIB}

Дальнейшая информация в этом вопросе о порядке связывания.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]