почему мои сборки openCL терпят неудачу на OS X? - PullRequest
7 голосов
/ 05 октября 2011

Я на OS X 10.7 Lion и у меня установлены все инструменты разработчика, но когда я запускаю GCC в относительно простой программе, просто прямая C с несколькими вызовами функций openCL, таких как clCreateProgramFromSource и т.п., я получаю следующий список ошибок:

Undefined symbols for architecture x86_64:
  "_CreateContext", referenced from:
    _build_kernel in ccFuZYMI.o
  "_GetDevices", referenced from:
    _build_kernel in ccFuZYMI.o
  "_CreateCommandQueue", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clCreateProgramWithSource", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clBuildProgram", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clCreateKernel", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clCreateBuffer", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clEnqueueWriteBuffer", referenced from:
    _sync_run_kernel in ccFuZYMI.o
  "_clSetKernelArg", referenced from:
    _sync_run_kernel in ccFuZYMI.o
  "_clEnqueueNDRangeKernel", referenced from:
    _sync_run_kernel in ccFuZYMI.o
  "_clEnqueueReadBuffer", referenced from:
    _sync_run_kernel in ccFuZYMI.o
  "_clReleaseContext", referenced from:
    _destroy_kernel in ccFuZYMI.o
  "_clReleaseCommandQueue", referenced from:
    _destroy_kernel in ccFuZYMI.o
  "_clReleaseMemObject", referenced from:
    _destroy_kernel in ccFuZYMI.o
  "_clReleaseProgram", referenced from:
    _destroy_kernel in ccFuZYMI.o
  "_clReleaseKernel", referenced from:
    _destroy_kernel in ccFuZYMI.o
ld: symbol(s) not found for architecture x86_64

Есть несколько других предупреждений, но других ошибок на этапе компиляции нет. Это (в случае неясного) ошибка компоновщика. Кажется, что он может видеть определения из файла заголовка при создании объектного файла, потому что он дает мне предупреждения о несовместимых типах указателей.

Я попытался вставить в проект xcode, но я получаю точно такие же ошибки. Я попробовал только другое решение OS X Lion / OpenCL , и оно не помогло.

Ответы [ 2 ]

14 голосов
/ 05 октября 2011

Похоже, вам не хватает фреймворка OpenCL - попробуйте:

$ gcc -Wall foo.c -framework OpenCL -o foo
3 голосов
/ 05 октября 2011

Мне кажется, что вы не связываетесь с библиотеками OpenCL.Можете ли вы опубликовать команду ссылки, которую вы пытаетесь использовать?Без этой информации, просто стрельба с бедра: добавить -framework OpenCL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...