我正在研究并行处理,需要使用不同的并行化API来测试计数器输出。每次我尝试制作代码时,都会得到undefined reference to 'PAPI_...
。
我正在使用PAPI 5.1.1并且已经知道哪个目录libpapi.a
和papi.h
。我在另一台PC上运行这个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
,我已经在做了。
有人有任何其他建议吗?
答案 0 :(得分:2)
根据链接器的版本,lib的顺序可能会给您带来麻烦。这可能就是为什么你可以在一些机器上编译而不在其他机器上编译的。
更改编译顺序应该这样做:
test: testPandP.cpp
${CC} ${CFLAGS} ${INCLUDE} -o test testPandP.cpp ${LIB}