linux opengl 环境准备


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)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux上编译OpenGL编程指南第8版的源码,首先需要进行一些准备工作。你需要确保你的Linux系统已经安装了OpenGL开发库和相关的工具。这些库和工具通常可以通过包管理器进行安装,例如在Ubuntu上可以使用apt-get命令。 接下来,你需要下载OpenGL编程指南第8版的源码。你可以通过官方网站或其他可靠的资源获取到源码文件。将源码文件下载到你的Linux系统的合适目录下。 一旦你下载并解压了源码文件,就可以开始编译了。打开终端,并导航到源码所在的目录。使用命令行工具进入源码目录。 在终端中,你需要运行一些命令来进行编译。首先,执行configure命令来配置编译环境。这个命令会根据你的系统设置一些必要的参数,并生成Makefile文件。例如,你可以运行以下命令: ```bash ./configure ``` 然后,你可以运行make命令来编译源码。这个命令会根据Makefile文件中的指示进行编译,生成可执行文件。例如,你可以运行以下命令: ```bash make ``` 编译过程可能需要一些时间,具体取决于你的系统性能和编译源码的大小。 一旦编译完成,你可以运行生成的可执行文件来测试源码。你可以通过以下命令来执行可执行文件: ```bash ./your_executable_file ``` 注意替换“your_executable_file”为你实际生成的可执行文件名称。 以上就是在Linux上编译OpenGL编程指南第8版源码的基本步骤。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值