2010-06-11 154 views
3

所以我下載了ATI Stream SDK。我現在沒有gpu,因此我使用'-device cpu'並通過將目錄添加到LD_LIBRARY_PATH中來獲取OpenCl目錄中的程序/示例。QtOpenCl「undefined reference」出錯

現在問題出在安裝QtOpenCl時。

配置腳本給我:

[email protected]:~/Applications/qt-labs-opencl$ ./configure 

This is the QtOpenCL configuration utility. 

Qt version ............. 4.6.2 
qmake .................. /usr/bin/qmake 
OpenCL ................. yes 
OpenCL/OpenGL interop .. yes 
Extra QMAKE_CXXFLAGS ... 
Extra INCLUDEPATH ...... 
Extra LIBS ............. -lOpenCL 

QtOpenCL has been configured. Run '/usr/bin/make' to build. 

製作給我:

[email protected]:~/Applications/qt-labs-opencl$ make 
cd src/ && make -f Makefile 
make[1]: Entering directory `/home/skkard/Applications/qt-labs-opencl/src' 
cd opencl/ && make -f Makefile 
make[2]: Entering directory `/home/skkard/Applications/qt-labs-opencl/src/opencl' 
make[2]: Nothing to be done for `first'. 
make[2]: Leaving directory `/home/skkard/Applications/qt-labs-opencl/src/opencl' 
cd openclgl/ && make -f Makefile 
make[2]: Entering directory `/home/skkard/Applications/qt-labs-opencl/src/openclgl' 
make[2]: Nothing to be done for `first'. 
make[2]: Leaving directory `/home/skkard/Applications/qt-labs-opencl/src/openclgl' 
make[1]: Leaving directory `/home/skkard/Applications/qt-labs-opencl/src' 
cd examples/ && make -f Makefile 
make[1]: Entering directory `/home/skkard/Applications/qt-labs-opencl/examples' 
cd opencl/ && make -f Makefile 
make[2]: Entering directory `/home/skkard/Applications/qt-labs-opencl/examples/opencl' 
cd vectoradd/ && make -f Makefile 
make[3]: Entering directory `/home/skkard/Applications/qt-labs-opencl/examples/opencl/vectoradd' 
g++ -o vectoradd vectoradd.o qrc_vectoradd.o -L/usr/lib -L../../../lib -L../../../bin -lQtOpenCL -lQtGui -lQtCore -lpthread 
../../../lib/libQtOpenCL.so: undefined reference to `clBuildProgram' 
../../../lib/libQtOpenCL.so: undefined reference to `clSetCommandQueueProperty' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueNDRangeKernel' 
../../../lib/libQtOpenCL.so: undefined reference to `clSetKernelArg' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueCopyBufferToImage' 
../../../lib/libQtOpenCL.so: undefined reference to `clReleaseMemObject' 
../../../lib/libQtOpenCL.so: undefined reference to `clFinish' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueUnmapMemObject' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetMemObjectInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueReadImage' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueMarker' 
../../../lib/libQtOpenCL.so: undefined reference to `clRetainCommandQueue' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetCommandQueueInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueCopyImage' 
../../../lib/libQtOpenCL.so: undefined reference to `clReleaseContext' 
../../../lib/libQtOpenCL.so: undefined reference to `clRetainMemObject' 
../../../lib/libQtOpenCL.so: undefined reference to `clReleaseEvent' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueWriteBuffer' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueCopyBuffer' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueMapImage' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueReadBuffer' 
../../../lib/libQtOpenCL.so: undefined reference to `clUnloadCompiler' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueBarrier' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetProgramBuildInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueWaitForEvents' 
../../../lib/libQtOpenCL.so: undefined reference to `clRetainProgram' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateContext' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateImage3D' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueMapBuffer' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetDeviceIDs' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetContextInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetDeviceInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clReleaseCommandQueue' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetSamplerInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetPlatformIDs' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetSupportedImageFormats' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetPlatformInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clWaitForEvents' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetEventInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetEventProfilingInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetImageInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateProgramWithBinary' 
../../../lib/libQtOpenCL.so: undefined reference to `clReleaseSampler' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateCommandQueue' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetKernelWorkGroupInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clRetainEvent' 
../../../lib/libQtOpenCL.so: undefined reference to `clRetainContext' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateSampler' 
../../../lib/libQtOpenCL.so: undefined reference to `clReleaseProgram' 
../../../lib/libQtOpenCL.so: undefined reference to `clFlush' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetProgramInfo' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateKernel' 
../../../lib/libQtOpenCL.so: undefined reference to `clRetainKernel' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueWriteImage' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateBuffer' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateKernelsInProgram' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateProgramWithSource' 
../../../lib/libQtOpenCL.so: undefined reference to `clReleaseKernel' 
../../../lib/libQtOpenCL.so: undefined reference to `clRetainSampler' 
../../../lib/libQtOpenCL.so: undefined reference to `clCreateImage2D' 
../../../lib/libQtOpenCL.so: undefined reference to `clEnqueueCopyImageToBuffer' 
../../../lib/libQtOpenCL.so: undefined reference to `clGetKernelInfo' 
collect2: ld returned 1 exit status 
make[3]: *** [vectoradd] Error 1 
make[3]: Leaving directory `/home/skkard/Applications/qt-labs-opencl/examples/opencl/vectoradd' 
make[2]: *** [sub-vectoradd-make_default] Error 2 
make[2]: Leaving directory `/home/skkard/Applications/qt-labs-opencl/examples/opencl' 
make[1]: *** [sub-opencl-make_default] Error 2 
make[1]: Leaving directory `/home/skkard/Applications/qt-labs-opencl/examples' 
make: *** [sub-examples-make_default-ordered] Error 2 

試了一下使用 '-no-openclgl',但沒有一個實例等編譯。

我使用的是使用從突觸安裝的Qt的ubuntu 10.04。

回答

2

我猜你沒有鏈接OpenCL運行時。 QT庫正在調用這些函數,但是它們不在另一個文件中定義。您必須鏈接「該」文件來解決您的問題。

+0

你的意思是創建一個syslink?如何和在哪裏? – 2010-06-11 07:54:41

+0

我必須鏈接OpenCL標頭嗎?他們鏈接我認爲.. – 2010-06-11 08:10:11

+0

不,你必須鏈接OpenCL庫(即.so文件)! – Goz 2010-06-11 08:18:19