[DUPLICATE]谢谢Mike Kinghan!没错,我的编译/链接命令 ARGUMENT ORDER 的特定问题已在很长的答案集中被逐步解决。将编译语句从...- lOpenCL cltest.cc更改为... cltestcc -lOpenCL修复了我的编译/链接,并使我进入了“ num_platforms = 0”。下一个障碍...
尝试很多事情来在Ubuntu 18.04上设置OpenCL。我正在尝试让第一个调用clGetPlatformIDs起作用,但无法链接。
代码如下:
#define CL_TARGET_OPENCL_VERSION 220
#include <CL/cl.h>
int main(int argc, char**argv) {
cl_uint n_plats;
clGetPlatformIDs(0, 0, &n_plats);
}
然后我用
进行编译g++ -o cltest -I /opt/OpenCL-Headers -L /usr/lib/x86_64-linux-gnu -lOpenCL cltest.cc
错误:
/tmp/ccVNpNKv.o: In function `main':
cltest.cc:(.text+0x30): undefined reference to `clGetPlatformIDs'
collect2: error: ld returned 1 exit status
我有一个/usr/lib/x86_64-linux-gnu/libOpenCL.so(Intel?)和一个/opt/AMDAPPSDK-3.0/lib/x86_64/libOpenCL.so(AMD)。我尝试链接到它们两个,并且都给出相同的错误。
我也在线看到了我可以在.so内部进行检查的情况:
nm -D /usr/lib/x86_64-linux-gnu/libOpenCL.so | grep clGetPlatformIDs
0000000000005010 T clGetPlatformIDs
为什么g ++无法链接到该函数? (AMD libOpenCL.so也具有clGetPlatformID)
此外,在AMDAPPSDK-3.0 / samples区域中,我设法制作一个Makefile并进行了BufferBandwidth测试,ldd说它与AMD版本的OpenCL链接,并且实际上成功了!但是cmake-Make文件是如此复杂,我看不到它如何进行链接。 AND运行时,出现以下错误:
Error: clGetPlatformIDs failed. Error code : CL_PLATFORM_NOT_FOUND_KHR
validatePlatfromAndDeviceOptions failed.