编译OpenCL HelloWorld程序:链接器错误

时间:2019-01-26 02:17:49

标签: c macos cmake opencl codeblocks

我的参考代码来自Aaftab Munshi的“ OpenCL编程指南”。该代码的源文件可以在https://github.com/bgaster/opencl-book-samples/tree/master/src/Chapter_2/HelloWorld

中找到

我正在尝试在macOS Sierra版本10.12.6上运行代码。按照书中的说明,我在包含在上述GitHub链接中找到的源文件的文件夹中运行以下命令:

mkdir build
cd build
cmake ../ "CodeBlocks - Unix Makefiles"

您需要安装cmake才能运行最后一行。该示例来自第2章,第2页。文字的41。运行cmake会生成一个Code :: Blocks文件。当我尝试构建Code :: Blocks文件时,出现以下错误:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [HelloWorld] Error 1
make[1]: *** [CMakeFiles/HelloWorld.dir/all] Error 2
make: *** [all] Error 2 

有人知道为什么会发生此错误吗?这似乎与构建过程有关,而不是C语法。

谢谢!

2 个答案:

答案 0 :(得分:1)

要让cmake看到LuminanceHDR / opencl分支的mac openCL内容,我必须执行以下操作(添加到CMakeLists.txt):

"HR.S"

答案 1 :(得分:0)

Instruction installations具体说来,您应该构建整个项目(将与以下内容的顶层目录相同的源目录传递给cmake克隆的项目)。

每个示例中包含的

CMakeLists.txt不能单独构建

(看,他们错过了每个CMake项目所需的cmake_minimum_required()project()调用;也错过了对将设置变量find_project(OpenCL)的{​​{1}}的调用)。