CentOS 7安装 mesa
===============
How to install mesa on centos 7.
--------------------------------
**1. 下载原文件**
下载连接:
[mesa-11.1.3.tar.gz](https://mesa.freedesktop.org/archive/older-versions/11.x/11.1.3/mesa-11.1.3.tar.gz)
[freeglut-3.0.0.tar.gz](https://excellmedia.dl.sourceforge.net/project/freeglut/freeglut/3.0.0/freeglut-3.0.0.tar.gz)
[libdrm-2.4.66.tar.bz2](https://dri.freedesktop.org/libdrm/libdrm-2.4.66.tar.bz2)
[llvm-3.8.0.src.tar.gz](http://releases.llvm.org/3.8.0/llvm-3.8.0.src.tar.xz)
[cfe-3.8.0.src.tar.xz](http://releases.llvm.org/3.8.0/cfe-3.8.0.src.tar.xz)
[compiler-rt-3.8.0.src.xz](http://releases.llvm.org/3.8.0/compiler-rt-3.8.0.src.tar.xz)
[test-suilt-3.8.0.src.tar.xz](http://releases.llvm.org/3.8.0/test-suite-3.8.0.src.tar.xz)
[mesa-demos-8.3.0.tar.bz2](https://mesa.freedesktop.org/archive/demos/8.3.0/mesa-demos-8.3.0.tar.bz2)
[glu-9.0.0.tar.bz2](https://mesa.freedesktop.org/archive/glu/glu-9.0.0.tar.bz2)
**2. 安装依赖库**
```
$ sudo yum install xorg-x11-proto-devel
$ sudo yum install libxcb-devel
$ sudo yum install libpciaccess-devel
$ sudo yum install libdrm-devel
$ sudo yum install libxshmfence-devel
$ sudo yum install libX11-devel
$ sudo yum install libXext-devel
$ sudo yum install libXdamage-devel
$ sudo yum install libXfixes-devel
$ sudo yum install libxcb-devel
$ sudo yum install libudev-devel
$ sudo yum install expat-devel
```
**3. 安装llvm**
```
$ tar xvf llvm-3.8.0.src.tar.xz
$ tar xvf cfe-3.8.0.src.tar.xz
$ tar xvf compiler-rt-3.8.0.src.tar.xz
$ tar xvf test-suite-3.8.0.src.tar.xz
$ cp cfe-3.8.0 llvm-3.8.0/tools/clang -r
$ cp compiler-rt-3.8.0 llvm-3.8.0/projects/compiler-rt -r
$ cp test-suite-3.8.0 llvm-3.8.0/projects/test-suite -r
$ cd llvm-3.8.0
$ mkdir build
$ cd build
$ ../configure --enable-shared --enable-optimized
$ make -j8
$ sudo make install
```
**4. 安装mesa**
```
// install mesa
$ cd mesa-11.1.3/
$ ./configure
$ make -j8
$ sudo make install
// install glu
$ cd glu-9.0.0
$ ./configure
$ make -j8
$ sudo make install
// install freeglut
$ cd freeglut-3.0.0
$ sudo yum install libXi-devel
$ cmake ./CMakeLists.txt
$ make -j8
$ sudo make install
```
**5. 连接库**
```
// copy the old lib back.
# cd /usr/lib64
# mkdir glbak
# cp libGL* glbak
# rm libGL.so.1
# ln -s /usr/local/
# ln -s /usr/local/lib/libGL.so.1.2.0 ./libGL.so
# ln -s /usr/local/lib/libGL.so.1.2.0 ./libGL.so.1
# rm libGLU.so.1
# ln -s /usr/local/lib/libGLU.so.1.3.1 ./libGLU.so.1
# ln -s /usr/local/lib64/libglut.so.3.10.0 ./libglut.so
# cp dri/ dri_bak -r
# rm dri -rf
# ln -s /usr/local/lib/dri/ .
# reboot
```
**5. 测试**
OpenGL 测试代码:
```
// file test.c
#include <GL/glut.h>
void init();
void display();
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(300, 300);
glutCreateWindow("OpenGL 3D View");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5, 5, -5, 5, 5, 15);
glMatrixMode(GL_MODELVIEW);
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0, 0);
glutWireTeapot(3);
glFlush();
}
```
代码显示结果如下: