Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我会得到一个“;未定义的引用”;在某些计算机上运行Makefile时出错,但在其他计算机上不运行?_C++_Papi - Fatal编程技术网

C++ 为什么我会得到一个“;未定义的引用”;在某些计算机上运行Makefile时出错,但在其他计算机上不运行?

C++ 为什么我会得到一个“;未定义的引用”;在某些计算机上运行Makefile时出错,但在其他计算机上不运行?,c++,papi,C++,Papi,我正在做一些关于并行处理的研究,需要用不同的并行化API测试计数器输出。每次我尝试编写代码时,都会得到对“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/i

我正在做一些关于并行处理的研究,需要用不同的并行化API测试计数器输出。每次我尝试编写代码时,都会得到对“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
,我已经在这么做了


有人有其他建议吗?

根据链接器的版本,LIB的顺序可能会给您带来麻烦。这可能就是为什么您可以在某些机器上编译,但在其他机器上却无法编译

更改编译顺序可以做到这一点:

test: testPandP.cpp
     ${CC} ${CFLAGS} ${INCLUDE} -o test testPandP.cpp ${LIB}
进一步资料