歡迎您光臨本站 註冊首頁

在Redhat9下構建TinyX+GTK圖形環境 .

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

在Redhat9下構建TinyX+GTK圖形環境 .

在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為:view plaincopy to clipboardprint?
01.#define KDriveXServer  YES   
02.#define TinyXServer    YES   
03.#define XfbdevServer   YES   
04.#define BuildLBX                YES   
05.#define BuildFonts              YES   
06.#define BuildAppgroup           NO   
07.#define BuildDBE                NO   
08.#define BuildXCSecurity         YES   
09.#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  
#define KDriveXServer  YES
#define TinyXServer    YES
#define XfbdevServer   YES
#define BuildLBX                YES
#define BuildFonts              YES
#define BuildAppgroup           NO
#define BuildDBE                NO
#define BuildXCSecurity         YES
#define FontServerAccess        NO
#undef BuildXF86RushExt
#define BuildXF86RushExt        NO
#undef BuildRender
#define BuildRender             YES
#define UseRgbTxt               YES
#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為640x480,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文件:

view plaincopy to clipboardprint?01.//demo.c   
02.#include <gtk/gtk.h>   
03.char *_(char *c)  
04.{  
05.    return(g_locale_to_utf8(c,-1,0,0,0));  
06.}  
07.int  main(int argc,char *argv[])  
08.{  
09.    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.}  
//demo.c
#include <gtk/gtk.h>
char *_(char *c)
{
    return(g_locale_to_utf8(c,-1,0,0,0));
}
int  main(int argc,char *argv[])
{
    GtkWidget *window;
    gtk_init(&argc,&argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),_("中文窗口"));   //定義窗口的標題
    gtk_window_set_default_size(GTK_WINDOW(window),200,200);   //設置窗口的大小
    gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_MOUSE);   //設置窗口顯示的位置為滑鼠的位置
    gtk_widget_show(window);
    gtk_main();
    return 1;
}編譯:

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

執行:

./demo

效果:




****END***

[火星人 ] 在Redhat9下構建TinyX+GTK圖形環境 .已經有375次圍觀

http://coctec.com/docs/service/show-post-1733.html