编译安装 Mesa (OpenGL)

最近因为工作需要,想看一下 OpenGL 的东西,就在笔记本上搭建了 OpenGL 的环境。

1. 下载 Mesa 的源码 MesaLib-8.0.4.tar.bz2

解压后, 运行 configure, 根据提示安装必要的包, 编译,安装

我安装到了 /usr/local/private 下面:

/usr/local/private$ tree .
.
├── include
│   ├── EGL
│   │   ├── eglext.h
│   │   ├── egl.h
│   │   ├── eglmesaext.h
│   │   └── eglplatform.h
│   ├── GL
│   │   ├── glext.h
│   │   ├── gl.h
│   │   ├── gl_mangle.h
│   │   ├── glu.h
│   │   ├── glu_mangle.h
│   │   ├── glut.h
│   │   ├── glxext.h
│   │   ├── glx.h
│   │   ├── glx_mangle.h
│   │   ├── internal
│   │   │   └── dri_interface.h
│   │   ├── osmesa.h
│   │   ├── vms_x_fix.h
│   │   ├── wglext.h
│   │   └── wmesa.h
│   └── KHR
│       └── khrplatform.h
└── lib
    ├── dri
    │   ├── i915_dri.so
    │   ├── i965_dri.so
    │   ├── nouveau_vieux_dri.so
    │   ├── r200_dri.so
    │   ├── r300_dri.so
    │   ├── r600_dri.so
    │   ├── radeon_dri.so
    │   ├── swrast_dri.so
    │   └── vmwgfx_dri.so
    ├── libEGL.so -> libEGL.so.1
    ├── libEGL.so.1 -> libEGL.so.1.0
    ├── libEGL.so.1.0
    ├── libGL.so -> libGL.so.1
    ├── libGL.so.1 -> libGL.so.1.2
    ├── libGL.so.1.2
    ├── libGLU.so -> libGLU.so.1
    ├── libGLU.so.1 -> libGLU.so.1.3.08000
    ├── libGLU.so.1.3.08000
    ├── libglut.so -> libglut.so.3
    ├── libglut.so.3 -> libglut.so.3.7.1
    ├── libglut.so.3.7.1
    └── pkgconfig
        ├── dri.pc
        ├── egl.pc
        ├── gl.pc
        ├── glu.pc
        └── glut.pc

8 directories, 45 files

2.下载 GLUT 的源码 MesaGLUT-7.9.2.tar.bz2

因为编译 GLUT 需要使用编译  Mesa 的配置环境,所以,要在 Mesa-7.9.2下建几个链接:

:~/Code/mesa/Mesa-7.9.2$ ls -l
total 8
lrwxrwxrwx 1 charles charles   18 Aug 30 00:26 bin -> ../Mesa-8.0.2/bin/
lrwxrwxrwx 1 charles charles   21 Aug 30 00:26 configs -> ../Mesa-8.0.2/configs
drwxrwxr-x 3 charles charles 4096 Aug 30 00:25 include
lrwxrwxrwx 1 charles charles   17 Aug 30 00:56 lib -> ../Mesa-8.0.2/lib
drwxrwxr-x 3 charles charles 4096 Aug 30 00:25 src
然后即可以编译,但是在生成 lib文件的时候还是报错,说是 gcc 找不到,等等。

经过分析,原因是,有几个  glut的库的变量没有定义,在 src/glut/glx/Makefile 里面加入:

 19 GLUT_LIB=glut
 20 GLUT_LIB_NAME = lib$(GLUT_LIB).so
 21 GLUT_LIB_GLOB = lib$(GLUT_LIB).*so*
然后就没有问题了。


3. 编译 GLEW.

进入目录, 然后:

~/Code/mesa/glew-1.9.0$ make GLEW_DEST=/usr/local/private
sudo make install GLEW_DEST=/usr/local/private



3. 下载 mesa-demos-8.0.1.tar.bz2

编译 demo 需要 GLEW 库。

glew代码可从 http://glew.sourceforge.net/ 下载到。

我想 把 glew库也放到 /usr/local/private下面,因此,编译代码的时候,执行

~/Code/mesa/glew-1.9.0$ make GLEW_DEST=/usr/local/private
这样,会把指定的路径写到 makefile 和配置文件中, make install 的时候,会把生成的库装到指定的路径。

安装的时候,也要指定安装目录:

:~/Code/mesa/glew-1.9.0$ sudo make GLEW_DEST=/usr/local/private install

4. 编译一个opengl 程序

比如,编译 opengl demo 里面的程序 fire.c, 可用如下的命令:

~/Code/mesa/mesa-demos-8.0.1/src/demos$ gcc fire.c ../util/readtex.c   -o fire  `pkg-config --cflags --libs gl glu glut` -I../util/  -lX11 -lXmu -lm -lXi
其实,还需要先设置一下 pkg-config的路径和 动态库的搜索路径
export PKG_CONFIG_PATH=/usr/local/private/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/private/lib/

上面的 lXi 是动态库 /usr/lib/i386-linux-gnu/libXi.so.6,可用如下的方法查询它的信息,先查它属于哪个安装包:

apt-file search  /usr/lib/i386-linux-gnu/libXi.so.6
libxi6: /usr/lib/i386-linux-gnu/libXi.so.6
libxi6: /usr/lib/i386-linux-gnu/libXi.so.6.1.0
libxi6-dbg: /usr/lib/debug/usr/lib/i386-linux-gnu/libXi.so.6.1.0
dpkg -S /usr/lib/i386-linux-gnu/libXi.so.6
libxi6: /usr/lib/i386-linux-gnu/libXi.so.6
然后查一下这个安装包的信息:

apt-cache show libxi6
Package: libxi6
Priority: optional
Section: libs
Installed-Size: 141
Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Architecture: i386
Source: libxi
Version: 2:1.6.0-0ubuntu2
Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.4.99.1), libxext6
Pre-Depends: multiarch-support
Filename: pool/main/libx/libxi/libxi6_1.6.0-0ubuntu2_i386.deb
Description-en: X11 Input extension library
 libXi provides an X Window System client interface to the XINPUT
 extension to the X protocol.
 .
 The Input extension allows setup and configuration of multiple input devices,
 and will soon allow hotplugging of input devices; to be added and removed on
 the fly.
 .



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值