我正在尝试为我的计算机科学课程编译一个C程序。我已经在我的Mac上安装了命令行工具,所以我可能已经有了OpenGL。该程序的描述是针对Ubuntu的,并且要求我使用以下命令进行编译:
gcc -Wall -ansi -pedantic -O2 main.o graphic.o imagem.o io.o -o ep2 -lGL -lGLU -lglut
我运行了它,结果显示:
ld: library not found for -lGL
我应该使用哪些标志?我该怎么做?
在MacOS X中,您不是使用库来包含系统级API,而是使用框架。编译此程序的正确命令行为:
gcc -Wall -ansi -pedantic -O2 \
main.o graphic.o imagem.o io.o \
-o ep2 \
-framework OpenGL -lGLU -lglut
需要注意的是,GLU 很可能也是 OpenGL 框架的一部分。在安装 GLU 之前,可能需要先安装 GLUT。
-lGL
,而是需要使用 OpenGL 框架。此外,在源代码中可能需要将 #include <GL/gl.h>
替换为 #include <OpenGL/gl.h>
。苹果公司严重患有“不自行开发”的综合症。 - datenwolf#include <OpenGL/glu.h>
,并在Makefile中包含-framework OpenGL
就足以使用它了。同样,还有一个GLUT框架;在OS X上使用#include <GLUT/glut.h>
和-framework GLUT
。确保在确定如何#include
头文件时使用类似于#ifdef __APPLE__
的东西,因为其他地方的世界倾向于遵循约定:<GL/gl.h>
:) - Andon M. ColemanlibGL.so
(通过-lGL
链接)是X11/GLX执行路径所需的接口库。因此,在典型的macOS系统上,这两个库都可以找到,但只有一个(OpenGL框架中的那个)可以通过本机GUI系统工作。 - datenwolf
-lGL -lGLU -lglut
吗? - Kevin