1、安装opengl的开发包
yum install mesa*
这个是opengl在linux上实现的一个开发包。
2、安装glut
用来辅助建立与平台无关的窗口,有不少实现,此处选择 freeglut
yum install freeglut*
3、安装Xmu开发包
检查:yum list *Xmu*
安装:
yum install libXmu-devel.i686
4、安装Xi开发包
检查 yum list *Xi*
安装:
yum install libXi-devel.i686
5、写代码测试
(此处代码由http://w57w57w57.blog.163.com/blog/static/9607473520099297540393/拷贝而来)
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2f(-0.5,-0.5);
glVertex2f(-0.5,0.5);
glVertex2f(0.5,0.5);
glVertex2f(0.5,-0.5);
glEnd();
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutCreateWindow("Hello,world!");
glutDisplayFunc(display);
glutMainLoop();
}
编译链接:
gcc -I/usr/include -L/usr/local/lib -L/usr/lib -lglut -lGLU -lGL -lX11 -lXext -lXmu -lXi -lm hello.c -o hello
运行:
./hello
可以看到有个黑色的窗口生成。
点击关闭的时候,会报错误:留着以后分析吧。
*** glibc detected *** ./hello: double free or corruption (!prev): 0x09c47bb0 ***
======= Backtrace: =========
/lib/libc.so.6(+0x1cee31)[0x3c0e31]
/lib/libc.so.6(+0x1d1571)[0x3c3571]
/usr/lib/libdricore9.2.0-devel.so.1(_mesa_free_context_data+0x2d2)[0xe65372]
/usr/lib/libdricore9.2.0-devel.so.1(_mesa_destroy_context+0x27)[0xe65447]
/usr/lib/dri/swrast_dri.so(+0x2d21)[0x57fd21]
/usr/lib/dri/swrast_dri.so(+0x231b)[0x57f31b]
/usr/lib/libGL.so.1[0x244eb66]
/usr/lib/libGL.so.1[0x2429bc0]
/usr/lib/libGL.so.1[0x242a2f7]
/usr/lib/libX11.so.6(XCloseDisplay+0xab)[0x16ddab]
/usr/lib/libglut.so.3(fgDeinitialize+0x21b)[0x79c91b]
/usr/lib/libglut.so.3(glutMainLoopEvent+0xa59)[0x79f349]
/usr/lib/libglut.so.3(glutMainLoop+0x55)[0x79f3b5]
./hello[0x804870a]
/lib/libc.so.6(__libc_start_main+0xe6)[0x366d26]
./hello[0x80485c1]
======= Memory map: ========
00101000-0011e000 r-xp 00000000 08:02 179910 /lib/libgcc_s-4.4.7-20120601.so.1
0011e000-0011f000 rw-p 0001d000 08:02 179910 /lib/libgcc_s-4.4.7-20120601.so.1
00121000-00128000 r-xp 00000000 08:02 185289 /usr/lib/libSM.so.6.0.1
00128000-00129000 rw-p 00006000 08:02 185289 /usr/lib/libSM.so.6.0.1
00131000-00135000 r-xp 00000000 08:02 185279 /usr/lib/libXxf86vm.so.1.0.0
00135000-00136000 rw-p 00004000 08:02 185279 /usr/lib/libXxf86vm.so.1.0.0
00136000-00137000 r-xp 00000000 08:02 185276 /usr/lib/libX11-xcb.so.1.0.0
00137000-00138000 rw-p 00000000 08:02 185276 /usr/lib/libX11-xcb.so.1.0.0
00138000-00156000 r-xp 00000000 08:02 185141 /lib/ld-2.12.so
00156000-00157000 r--p 0001d000 08:02 185141 /lib/ld-2.12.so
00157000-00158000 rw-p 0001e000 08:02 185141 /lib/ld-2.12.so
00158000-0028d000 r-xp 00000000 08:02 185166 /usr/lib/libX11.so.6.3.0
0028d000-00291000 rw-p 00134000 08:02 185166 /usr/lib/libX11.so.6.3.0
00291000-002a8000 r-xp 00000000 08:02 185143 /lib/libpthread-2.12.so
002a8000-002a9000 r--p 00016000 08:02 185143 /lib/libpthread-2.12.so
002a9000-002aa000 rw-p 00017000 08:02 185143 /lib/libpthread-2.12.so
002aa000-002ac000 rw-p 00000000 00:00 0
002ac000-002c9000 r-xp 00000000 08:02 185182 /lib/libselinux.so.1
002c9000-002ca000 r--p 0001c000 08:02 185182 /lib/libselinux.so.1
002ca000-002cb000 rw-p 0001d000 08:02 185182 /lib/libselinux.so.1
002ce000-002cf000 r-xp 00000000 00:00 0 [vdso]
002f7000-0030e000 r-xp 00000000 08:02 160324 /usr/lib/libXmu.so.6.2.0
0030e000-0030f000 rw-p 00017000 08:02 160324 /usr/lib/libXmu.so.6.2.0
00314000-00317000 r-xp 00000000 08:02 185154 /lib/libdl-2.12.so
00317000-00318000 r--p 00002000 08:02 185154 /lib/libdl-2.12.so
00318000-00319000 rw-p 00003000 08:02 185154 /lib/libdl-2.12.so
0031b000-00322000 r-xp 00000000 08:02 185144 /lib/librt-2.12.so
00322000-00323000 r--p 00006000 08:02 185144 /lib/librt-2.12.so
00323000-00324000 rw-p 00007000 08:02 185144 /lib/librt-2.12.so
00326000-0034e000 r-xp 00000000 08:02 185157 /lib/libm-2.12.so
0034e000-0034f000 r--p 00027000 08:02 185157 /lib/libm-2.12.so
0034f000-00350000 rw-p 00028000 08:02 185157 /lib/libm-2.12.so
00350000-004e1000 r-xp 00000000 08:02 185142 /lib/libc-2.12.so
004e1000-004e3000 r--p 00191000 08:02 185142 /lib/libc-2.12.so
004e3000-004e4000 rw-p 00193000 08:02 185142 /lib/libc-2.12.so
004e4000-004e7000 rw-p 00000000 00:00 0
0057d000-00582000 r-xp 00000000 08:02 154455 /usr/lib/dri/swrast_dri.so
00582000-00583000 rw-p 00004000 08:02 154455 /usr/lib/dri/swrast_dri.so
00673000-00692000 r-xp 00000000 08:02 185165 /usr/lib/libxcb.so.1.1.0
00692000-00693000 rw-p 0001f000 08:02 185165 /usr/lib/libxcb.so.1.1.0
00695000-00697000 r-xp 00000000 08:02 185164 /usr/lib/libXau.so.6.0.0
00697000-00698000 rw-p 00001000 08:02 185164 /usr/lib/libXau.so.6.0.0
00789000-007bc000 r-xp 00000000 08:02 189151 /usr/lib/libglut.so.3.9.0
007bc000-007c1000 rw-p 00033000 08:02 189151 /usr/lib/libglut.so.3.9.0
007d5000-007e0000 r-xp 00000000 08:02 185280 /usr/lib/libdrm.so.2.4.0
007e0000-007e1000 rw-p 0000a000 08:02 185280 /usr/lib/libdrm.so.2.4.0
007e3000-007e6000 r-xp 00000000 08:02 185278 /usr/lib/libxcb-dri2.so.0.0.0
007e6000-007e7000 rw-p 00003000 08:02 185278 /usr/lib/libxcb-dri2.so.0.0.0
007f9000-0080a000 r-xp 00000000 08:02 185173 /usr/lib/libXext.so.6.4.0
0080a000-0080b000 rw-p 00011000 08:02 185173 /usr/lib/libXext.so.6.4.0
0080d000-00833000 r-xp 00000000 08:02 185160 /lib/libexpat.so.1.5.2
00833000-00835000 rw-p 00025000 08:02 185160 /lib/libexpat.so.1.5.2
00842000-00850000 r-xp 00000000 08:02 185175 /usr/lib/libXi.so.6.1.0
00850000-00851000 rw-p 0000d000 08:02 185175 /usr/lib/libXi.so.6.1.0
00853000-008d4000 r-xp 00000000 08:02 149628 /usr/lib/libGLU.so.1.3.1
008d4000-008d5000 rw-p 00081000 08:02 149628 /usr/lib/libGLU.so.1.3.1
009a7000-009ab000 r-xp 00000000 08:02 185177 /usr/lib/libXfixes.so.3.1.0
009ab000-009ac000 rw-p 00004000 08:02 185177 /usr/lib/libXfixes.so.3.1.0
00b75000-00b77000 r-xp 00000000 08:02 185180 /usr/lib/libXdamage.so.1.1.0
00b77000-00b78000 rw-p 00001000 08:02 185180 /usr/lib/libXdamage.so.1.1.0
00df7000-00dfb000 r-xp 00000000 08:02 152195 /lib/libuuid.so.1.3.0
00dfb000-00dfc000 rw-p 00003000 08:02 152195 /lib/libuuid.so.1.3.0
00dfc000-011a8000 r-xp 00000000 08:02 154458 /usr/lib/libdricore9.2.0-devel.so.1.0.0
011a8000-011b8000 rw-p 003ac000 08:02 154458 /usr/lib/libdricore9.2.0-devel.so.1.0.0
011b8000-011cd000 rw-p 00000000 00:00 0
023d2000-0240d000 r-xp 00000000 08:02 189373 /usr/lib/libglapi.so.0.0.0
0240d000-02410000 rw-p 0003a000 08:02 189373 /usr/lib/libglapi.so.0.0.0
02410000-02411000 rw-p 00000000 00:00 0
02413000-0248a000 r-xp 00000000 08:02 154461 /usr/lib/libGL.so.1.2.0
0248a000-0248c000 rw-p 00076000 08:02 154461 /usr/lib/libGL.so.1.2.0
04eb2000-04f93000 r-xp 00000000 08:02 185193 /usr/lib/libstdc++.so.6.0.13
04f93000-04f97000 r--p 000e0000 08:02 185193 /usr/lib/libstdc++.so.6.0.13
04f97000-04f99000 rw-p 000e4000 08:02 185193 /usr/lib/libstdc++.so.6.0.13
04f99000-04f9f000 rw-p 00000000 00:00 0
04fa1000-04fb8000 r-xp 00000000 08:02 150659 /usr/lib/libICE.so.6.3.0
04fb8000-04fba000 rw-p 00016000 08:02 150659 /usr/lib/libICE.so.6.3.0
04fba000-04fbb000 rw-p 00000000 00:00 0
05079000-05090000 r-xp 00000000 08:02 185277 /usr/lib/libxcb-glx.so.0.0.0
05090000-05091000 rw-p 00017000 08:02 185277 /usr/lib/libxcb-glx.so.0.0.0
05738000-05791000 r-xp 00000000 08:02 168511 /usr/lib/libXt.so.6.0.0
05791000-05795000 rw-p 00058000 08:02 168511 /usr/lib/libXt.so.6.0.0
08048000-08049000 r-xp 00000000 08:05 131261 /home/hadoop/Desktop/prog/opengl/openglhello/hello
08049000-0804a000 rw-p 00000000 08:05 131261 /home/hadoop/Desktop/prog/opengl/openglhello/hello
09be2000-09e03000 rw-p 00000000 00:00 0 [heap]
b6548000-b65a0000 rw-p 00000000 00:00 0
b76f2000-b76fc000 rw-p 00000000 00:00 0
b770a000-b770b000 rw-p 00000000 00:00 0
bf949000-bf95e000 rw-p 00000000 00:00 0 [stack]
Aborted (core dumped)