编译在Mac OS X中使用OpenGl 4的C程序

时间:2017-05-23 17:40:18

标签: c gcc opengl-4

所以我从openglbook学习OpenGL 4。

我在编辑器中复制并粘贴了简单窗口创建程序,并使用

跟随Compiling OpenGL programs on OS X

gcc -o hello hello.c -framework OpenGL -framework GLUT

我收到以下错误:

Undefined symbols for architecture x86_64: "_glewGetErrorString", referenced from: _Initialize in chapter-c8ba2d.o "_glewInit", referenced from: _Initialize in chapter-c8ba2d.o "_glutInitContextFlags", referenced from: _InitWindow in chapter-c8ba2d.o "_glutInitContextProfile", referenced from: _InitWindow in chapter-c8ba2d.o "_glutInitContextVersion", referenced from: _InitWindow in chapter-c8ba2d.o "_glutSetOption", referenced from: _InitWindow in chapter-c8ba2d.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

1 个答案:

答案 0 :(得分:0)

如果我理解正确,问题在于 -framework GLUT 表示您正在链接 Apple 随 macOS 提供的 GLUT 框架,位于 /System/Library/Frameworks 文件夹内。不幸的是,这个 GLUT 实现缺少当前版本的 FreeGLUT 提供的一些功能。并且 OpenGLBook.com 教程使用了其中的一些功能,因此,正如这里多次提到的,代码示例必须使用 FreeGLUT 进行编译。

当然,有几种方法可以做到这一点。最简单的方法是通过臭名昭著的 Homebrew 包管理器安装 freeglut,然后按如下所述设置 CMake 项目。

所以,首先安装 freeglut

brew install freeglut

然后通过将以下几行添加到 CMakeLists.txt

来设置 CMake 项目
find_package(FreeGLUT CONFIG REQUIRED)
find_package(glew CONFIG REQUIRED)

link_libraries(FreeGLUT::freeglut GLEW::GLEW)