C++ OpenGL相关编译选项解析及OpenGL、GLEW、GLUT区别咨询
编译参数解析与OpenGL相关库区别说明
编译参数详解
你用的编译命令是:
clang -o name name.cpp -L/usr/local/lib -lglfw -lGLEW -framework OpenGL
针对你不清楚的参数,解释如下:
-lglfw和-lGLEW:这俩是告诉编译器要链接对应的第三方库。-l是「link(链接)」的缩写,后面跟的是库的简称——系统会自动在你用-L指定的路径(以及默认系统路径)里找libglfw.a(静态库)或libglfw.dylib(macOS动态库),GLEW同理。简单说就是把你的代码和GLFW、GLEW的实现绑定到最终的可执行文件里,这样你代码里调用的GLFW/GLEW函数才能找到对应的运行逻辑。-framework OpenGL:这是macOS独有的参数,用来链接系统自带的OpenGL框架。macOS把系统级核心库打包成framework格式,这个参数就是让编译器去关联系统里的OpenGL相关库,相当于在Linux上用-lGL的作用,但macOS用framework的方式管理这些系统级库。
OpenGL、GLEW、GLUT的核心区别
- OpenGL:它不是具体的库,而是一套图形编程的标准规范。定义了操作显卡绘制2D/3D图形的函数接口,但本身没有实现代码——真正的实现是由NVIDIA、AMD这些显卡厂商写在驱动里的。你写的OpenGL代码,本质上是调用显卡驱动里的实现来控制显卡干活。
- GLEW:全称OpenGL Extension Wrangler Library,是个OpenGL扩展加载工具。OpenGL的新功能都是以「扩展」形式发布的,不同显卡支持的扩展不一样,而且这些扩展函数的内存地址在程序运行前是不确定的。GLEW的作用就是帮你自动检测当前系统支持的扩展,自动加载这些函数的地址,让你不用手动写一堆复杂的加载代码,直接就能用新的OpenGL特性。
- GLUT:全称OpenGL Utility Toolkit,是个窗口与输入管理工具库。它帮你封装了创建窗口、处理键盘鼠标输入、初始化OpenGL上下文这些繁琐的底层操作,还附带了一些简单的几何体绘制工具。不过GLUT早就停止维护了,现在主流替代是你编译命令里的GLFW——GLFW更轻量,只专注于窗口和输入管理,没有GLUT那些额外的绘图工具,灵活性更高。
内容的提问来源于stack exchange,提问作者Maxibongo99
相关产品推荐
相关产品推荐

