linux下使用gcc编译Nate Robin的OpenGL教程

本文介绍了如何在Linux环境下使用GCC编译Nate Robin的OpenGL教程,通过解决编译过程中遇到的错误和警告,强调了链接库顺序的重要性,并提供了正确的编译命令。
摘要由CSDN通过智能技术生成

      按照OpenGL编程指南的建议,我决定一下Nate Robin的OpenGL教程,更确切地说,是编译运行该教程给出的transformation.c。虽然该教程已经给出了可以在windows下直接运行的exe文件,但是,请相信我,离开windows,在linux下用OpenGL会有不一样的感受。

      其实,我是来帮你消灭bug的。

      曾经以为,编译这个transformation.c是一件很简单的事情:gcc -lglut transformation.c。结果警告和错误一堆:

wy@wy-Vostro-260s:/media/d/wy/opengl/tutor/tutor$ gcc -lglut transformation.c 
transformation.c: 在函数‘main’中:
transformation.c:710:5: 警告: 传递‘glutKeyboardFunc’的第 1 个参数时在不兼容的指针类型间转换 [默认启用]
/usr/include/GL/freeglut_std.h:467:26: 附注: 需要类型‘void (*)(unsigned char,  int,  int)’,但实参的类型为‘void (*)(char,  int,  int)’
transformation.c:715:5: 警告: 传递‘glutKeyboardFunc’的第 1 个参数时在不兼容的指针类型间转换 [默认启用]
/usr/include/GL/freeglut_std.h:467:26: 附注: 需要类型‘void (*)(unsigned char,  int,  int)’,但实参的类型为‘void (*)(char,  int,  int)’
transformation.c:723:5: 警告: 传递‘glutKeyboardFunc’的第 1 个参数时在不兼容的指针类型间转换 [默认启用]
/usr/include/GL/freeglut_std.h:467:26: 附注: 需要类型‘void (*)(unsigned char,  int,  int)’,但实参的类型为‘void (*)(char,  int,  int)’
transformation.c:741:5: 警告: 传递‘glutKeyboardFunc’的第 1 个参数时在不兼容的指针类型间转换 [默认启用]
/usr/include/GL/freeglut_std.h:467:26: 附注: 需要类型‘void (*)(unsigned char,  int,  int)’,但实参的类型为‘void (*)(char,  int,  int)’
/tmp/cc7rpOXR.o: In function `setfont':
transformation.c:(.text+0xb): undefined reference to `glutBitmapHelvetica10'
transformation.c:(.text+0x43): undefined reference to `glutBitmapHelvetica12'
transformation.c:(.text+0x5c): undefined reference to `glutBitmapHelvetica18'
transformation.c:(.text+0x93): undefined reference to `glutBitmapTimesRoman10'
transformation.c:(.text+0xa3): undefined reference to `glutBitmapTimesRoman24'
transformation.c:(.text+0xd7): undefined reference to `glutBitmap8By13'
transformation.c:(.text+0x10b): undefined reference to `glutBitmap9By15'
/tmp/cc7rpOXR.o: In function `drawstr':
transformation.c:(.text+0x16b): undefined reference to `glRasterPos2i'
transformation.c:(.text+0x196): undefined reference to `glutBitmapCharacter'
/tmp/cc7rpOXR.o: In function `cell_draw':
transformation.c:(.text+0x1df): undefined reference to `glColor3ub'
transformation.c:(.text+0x209): undefined reference to `glColor3ub'
transformation.c:(.text+0x243): undefined reference to `glColor3ub'
/tmp/cc7rpOXR.o: In function `drawmodel':
transformation.c:(.text+0x37e): undefined reference to `glmReadOBJ'
transformation.c:(.text+0x3a5): undefined reference to `glmUnitize'
transformation.c:(.text+0x3b4): undefined reference to `glmFacetNormals'
transformation.c:(.text+0x3ca): undefined reference to `glmVertexNormals'
transformation.c:(.text+0x3df): undefined reference to `glmDraw'
/tmp/cc7rpOXR.o: In function `drawaxes':
transformation.c:(.text+0x403): undefined reference to `glColor3ub'
transformation.c:(.text+0x40f): undefined reference to `glBegin'
transformation.c:(.text+0x42e): undefined reference to `glVertex3f'
transformation.c:(.text+0x44d): undefined reference to `glVertex3f'
transformation.c:(.text+0x46c): undefined reference to `glVertex3f'
transformation.c:(.text+0x48b): undefined reference to `glVertex3f'
transformation.c:(.text+0x4aa): undefined reference to `glVertex3f'
/tmp/cc7rpOXR.o:transformation.c:(.text+0x4c9): more undefined references to `glVertex3f' follow
/tmp/cc7rpOXR.o: In function `drawaxes':
transformation.c:(.text+0x50c): undefined reference to `glEnd'
transformation.c:(.text+0x518): undefined reference to `glBegin'
transformation.c:(.text+0x537): undefined reference to `glVertex3f'
transformation.c:(.text+0x556): undefined reference to `glVertex3f'
transformation.c:(.text+0x575): undefined reference to `glVertex3f'
transformation.c:(.text+0x594): undefined reference to `glVertex3f'
transformation.c:(.text+0x5b3): undefined reference to `glVertex3f'
/tmp/cc7rpOXR.o:transformation.c:(.text+0x5d2): more undefined references to `glVertex3f' follow
/tmp/cc7rpOXR.o: In function `drawaxes':
transformation.c:(.text+0x615): undefined reference to `glEnd'
transformation.c:(.text+0x621): undefined reference to `glBegin'
transformation.c:(.text+0x640): undefined reference to `glVertex3f'
transformation.c:(.text+0x65f): undefined reference to `gl
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值