CentOS 6.6环境下OpenGL/libGL库测试及编译问题求助
解决CentOS 6.6下OpenGL示例编译时的未定义引用问题
嘿,我懂你现在的困扰——那些年代久远的OpenGL示例编译失败,报gluPerspective和gluLookAt未定义引用,这其实是个很常见的链接库遗漏问题,别慌,分分钟就能搞定!
问题根源
你看到的gluPerspective和gluLookAt这两个函数,并不属于GLUT库,它们是**GLU(OpenGL Utility Library)**的成员。你编译时只加了-lglut链接GLUT库,但没链接GLU库,所以链接器找不到这些函数的实现。另外,基础的OpenGL核心函数还需要依赖libGL库,也得一起链接上。
修复步骤
修正编译命令
把你的编译命令改成下面这样,同时链接GLUT、GLU和GL三个库:gcc cube.c -lglut -lGLU -lGL注意库的顺序,按照
glut -> GLU -> GL的顺序排列,能避免不少链接时的奇怪问题。确保安装了必要的开发包
如果改完命令还是报错,大概率是你没装对应的开发依赖库。在CentOS 6.6下,用yum一键安装这些包:sudo yum install mesa-libGL-devel mesa-libGLU-devel freeglut-devel作为CentOS默认的OpenGL实现,Mesa通过这些包提供了编译所需的头文件和库文件。
给你一个可测试的极简OpenGL Hello World示例
要是想快速验证环境是否正常,试试这个简单代码(保存为hello_opengl.c):
#include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glColor3f(1.0, 0.0, 0.0); glVertex2f(-0.5, -0.5); glColor3f(0.0, 1.0, 0.0); glVertex2f(0.5, -0.5); glColor3f(0.0, 0.0, 1.0); glVertex2f(0.0, 0.5); glEnd(); glFlush(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutCreateWindow("OpenGL Hello World"); glutDisplayFunc(display); glutMainLoop(); return 0; }
用刚才的命令编译:
gcc hello_opengl.c -lglut -lGLU -lGL
运行生成的a.out,应该会弹出一个窗口显示彩色三角形,就说明环境没问题啦。
内容的提问来源于stack exchange,提问作者irritable_phd_syndrome
相关产品推荐
相关产品推荐

