感谢支持
我们一直在努力

在Redhat9下构建TinyX+GTK图形环境

概述


最近要将RedHat9.02移植到一块嵌入式586的主板上,空间有限,还要有图形环境,支持中文。所以,要建立一个精简的图像环境,先选择TinyX+GTK的方式进行研究。TinyX是XFree86针对嵌入式的编译选项,体积小,启动速度快。


本文使用虚拟机vmware安装Redhat-9.02文本系统,然后用XFree86-4.3.0编译TinyX,最后编译GTK+-2.0。




1.安装Redhat-9.02


在vmware上新建一个虚拟机,硬盘空间为4GB,内存512MB。开始安装Redhat-9.02,选择linux text模式,中文安装语言,swap分区为512MB,其余空间都挂载到根目录下。bootloader用Grub,自定义安装软件包,选择的软件包如下:


Administration tools


Development Tools


Editors


Ftp Server


Kernel Development


NetWork Server


Printing Support


Server Configuration Tools


Sound and Video


System Tool


选择系统支持的语言为Chinese+English。




安装后将/etc/sysconfig/下的i18n文件修改如下:


LC_CTYPE=”zh_CN.GB2312″


SUPPORTED=”zh_CN.GB2312:en_US.UTF-8:en_US:en”


SYSFONT=”latercyrheb-sun16″


SYSFONTACM=”iso01″




2.编译libpng-1.2.16


编译TinyX时需要png.h文件,所以要重新安装libpng。先删除原有的libpng:


rm -rf /usr/lib/libpng*




下载libpng-1.2.16.tar.bz2 ,复制到/root目录下解压:


tar -xvjf  libpng-1.2.16.tar.bz2




源码包中的README和INSTALL文件有关于libpng的详细信息和编译安装方法,用如下命令编译安装:


cd /root/libpng-1.2.16


./configure


make


make install


默认安装在/usr/local/目录下,支持pkg-config,pkg-config文件放在/usr/lib/pkg-config/目录下。如果想卸载libpng,执行:make uninstall。




3.编译freetype-2.2.1


删除原有的freetype:


rm -rf /usr/lib/libfreetype*




下载freetype-2.2.1.tar.gz:


http://download.savannah.gnu.org/releases/freetype/ 


复制到/root/目录下解压:


tar -xvzf  freetype-2.2.1.tar.gz




编译、安装:


cd /root/freetype-2.2.1


./configure


make


make install


默认安装到/usr/local/目录下,支持pkg-config。




4.编译TinyX


先删除原系统的X-window:


rm -rf /usr/X11R6


rm -rf /etc/X11




下载XFree86-4.3.0:ftp://ftp.xfree86.org/pub/XFree86/4.3.0/,共下载7个软件包:


X430src-1.tgz 


X430src-2.tgz


X430src-3.tgz
X430src-4.tgz 
X430src-5.tgz
X430src-6.tgz 
X430src-7.tgz


全部复制到/root下解压,解压后的源码都会放在/root/xc目录下。




先编译一个lndir工具:


cd  /root/xc/config/util


make -f Makefile.ini lndir


cd ../../../


用lndir制作一个源文件的符号链接目录:


mkdir build 


cd build


../xc/config/util/lndir  ../xc




用TinyX.cf的配置安装:


cd config/cf


cp -arf TinyX.cf host.def


修改host.def为:


[cpp]


  1. #define KDriveXServer  YES   
  2. #define TinyXServer    YES   
  3. #define XfbdevServer   YES   
  4. #define BuildLBX                YES   
  5. #define BuildFonts              YES   
  6. #define BuildAppgroup           NO   
  7. #define BuildDBE                NO   
  8. #define BuildXCSecurity         YES   
  9. #define FontServerAccess        NO   
  10. #undef BuildXF86RushExt   
  11. #define BuildXF86RushExt        NO   
  12. #undef BuildRender   
  13. #define BuildRender             YES   
  14. #define UseRgbTxt               YES   
  15. #define BuildFontServer         NO  


cd ../../


touch xf86Date.h


touch xf86Version.h


make World


make install


主要的库、头文件、可执行文件和配置文件等都安装了在/etc/X11和/usr/X11R6下。




TinyX依赖于framebuffer,要打开framebuffer。修改/etc/grub.conf文件,在kernel一行添加:


vga=0x311 fb:on


0x311为640×480,16bpp。


然后重启系统,启动时,屏幕左上方会出现一个企鹅Logo。




重启后运行/usr/X11R6/bin/Xfbdev,即可启动Xserver,可以看到灰色背景上有一个X形的鼠标。


为Xfbdev建立一个符号链接:


ln -s Xfbdev X


这样就可以用startx命令启动X-window。用Ctrl+Alt+Backspace组合键退出X-window。




这里可能出现加载链接库的错误,查看/etc/ld.so.conf文件中是否有/usr/X11R6/lib,然后执行ldconfig -v。

5.设置pkg-config


在/root/.bashrc文件中添加PKG_CONFIG_PATH环境变量:


export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/X11R6/lib/pkgconfig




6.编译Glib-2.0


先删除原有的glib:


rm -rf /usr/lib/libglib*


rm -rf /usr/lib/libgmoudle*


rm -rf /usr/lib/libgobject*


rm -rf /usr/lib/gthread*




下载glib-2.0.0.tar.bz2:


http://ftp.gnome.org/pub/gnome/sources/glib/2.0/ 


复制到/root/目录下解压:


tar -xvjf  glib-2.0.0.tar.bz2




编译、安装:


cd /root/glib-2.0.0


./configure


make


make install


默认安装到/usr/local/目录下,支持pkg-config。




7.编译atk-1.0.0


删除原有的atk:


rm -rf /usr/lib/libatk*




修改/etc/ld.so.conf文件,添加:


/usr/local/lib




下载atk-1.0.0.tar.bz2:


http://ftp.gnome.org/pub/gnome/sources/atk/1.0/ 


复制到/root/目录下解压:


tar -xvjf  atk-1.0.0.tar.bz2




编译、安装:


cd /root/atk-1.0.0


./configure


make


make install


默认安装到/usr/local/目录下,支持pkg-config。




8.编译pango-1.0.0


删除原有的pango:


rm -rf /usr/lib/libpango*


rm -rf /usr/lib/pango




下载pango-1.0.0.tar.bz2:


http://ftp.gnome.org/pub/gnome/sources/pango/1.0/ 


复制到/root/目录下解压:


tar -xvjf  pango-1.0.0.tar.bz2




编译、安装:


cd  /root/pango-1.0.0


./configure


make


make install


默认安装到/usr/local/目录下,支持pkg-config。




9.编译libjpeg-6b


删除原有的libjpeg:


rm -rf  /usr/lib/libjpeg*




下载libjpeg-6b.tar.gz:


http://jaist.dl.sourceforge.net/project/cross-stuff/cross-stuff/1.0/libjpeg-6b.tar.gz 


复制到/root/目录下解压:


tar -xvzf  libjpeg-6b.tar.gz




编译、安装:


cd  /root/libjpeg-6b


./configure  –enable-shared


make


make install


默认安装到/usr/local/目录下。




10.编译gtk+-2.0


删除原有的gtk:


rm -rf  /etc/gtk*


rm -rf  /etc/gnome


rm -rf  /usr/bin/*gtk*


rm -rf  /usr/lib/libgtk*


rm -rf  /usr/lib/gtk*




下载gtk+-2.0.0.tar.bz2:


http://ftp.gnome.org/pub/gnome/sources/gtk+/2.0/ 


复制到/root/目录下解压:


tar -xvjf  gtk+-2.0.0.tar.bz2




编译、安装:


cd  /root/gtk+-2.0.0


./configure  –without-libtiff


make


make install


默认安装到/usr/local/目录下,支持pkg-config。




11.测试


运行startx,可以启动X-window。


然后运行gtk-demo,可以启动gtk-demo程序。


编写demo.c文件:


[cpp]


  1. //demo.c   

  2. #include <gtk/gtk.h>   

  3. char *_(char *c)  

  4. {  

  5.     return(g_locale_to_utf8(c,-1,0,0,0));  

  6. }  

  7. int  main(int argc,char *argv[])  

  8. {  

  9.     GtkWidget *window;  

  10.     gtk_init(&argc,&argv);  

  11.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  

  12.     gtk_window_set_title(GTK_WINDOW(window),_(“中文窗口”));   //定义窗口的标题   

  13.     gtk_window_set_default_size(GTK_WINDOW(window),200,200);   //设置窗口的大小   

  14.     gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_MOUSE);   //设置窗口显示的位置为鼠标的位置   

  15.     gtk_widget_show(window);  

  16.     gtk_main();  

  17.     return 1;  

  18. }  


编译:


gcc -Wall -o demo demo.c `pkg-config –cflags –libs gtk+-2.0` 


执行:


./demo


效果:




****END***

赞(0) 打赏
转载请注明出处:服务器评测 » 在Redhat9下构建TinyX+GTK图形环境
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏