无法链接到OpenCL

时间:2019-02-10 07:57:10

标签: g++ opencl ubuntu-18.04

[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.

0 个答案:

没有答案