运行环境
RedHat 6.3 Linux localhost 2.6.32-279.el6.i686
需准备好的文件:
libx86_1.1+ds1.orig.tar.gz
libx86_1.1+ds1-6.diff.gz
svgalib_1.4.3.orig.tar.gz
svgalib_1.4.3-30.debian.tar.gz
561491.patch
库安装步骤
#分别解压源码和补丁
tar xzf svgalib_1.4.3.orig.tar.gz
tar xzf svgalib_1.4.3-30.debian.tar.gz
#打上补丁
cd svgalib-1.4.3.orig/
for file in ../debian/patches/*.patch; do patch -p1 < $file; done
#svgalib 的编译需要 libx86 库
#解压源码
tar xzf libx86_1.1+ds1.orig.tar.gz
gunzip libx86_1.1+ds1-6.diff.gz
#打上补丁
cd libx86-1.1/
patch -p1 < ../libx86_1.1+ds1-6.diff
make // 这时会出现错误,修改 lrmi.c,添加 561491.patch 内的宏
make
make install //libx86 编译并安装成功
# 再回 svgalib-1.4.3.orig 目录执行安装命令就不会有错误了
make install
库安装成功后使用以下程序进行测试:
#include <stdlib.h>
#include <vga.h>
#include <vgagl.h>
int main(void)
{
int x, y;
vga_init();
vga_setmode(G320x200x256);
gl_setpalettecolor(4, 0xE7>>2, 0xDB>>2, 0xB5>>2); /* 0xE7DBB5 */
vga_setcolor(4);
for (x = 0; x < 320; x++)
for (y = 0; y < 200; y++)
vga_drawpixel(x, y);
sleep(5);
vga_setmode(TEXT);
return EXIT_SUCCESS;
}
执行编译命令:
gcc -o svgatest svgatest.c -lvga -lvgagl
运行结果:
正确的结果是 Teminal 呈现出类似“泛黄的纸”的颜色。
可是我得到的结果却没有这么完美,当时一运行显示出下面的结果:
mmap /dev/zero Permission denied
傻了!经过百般检索终于找到了解决的办法。