1. 程式人生 > >Linux下Minigui開發環境的搭建(PC+S3C2440

Linux下Minigui開發環境的搭建(PC+S3C2440

花了兩天時間終於把Minigui的開發環境搭建好了,遇到了很多問題,看了很多人的部落格,對我的啟發很大。關鍵是以前偷懶裝redhat的時候為了省空間,很多庫檔案都沒安裝搞的自己很狼狽,不過也由於這個原因,讓我真正細細的實踐了一遍Minigui的移植,理解加深了很多。



Minigui算是我們中國人在世界軟體界的驕傲了,作為中國人理應學它,雖然現在基本都用QT了。(關鍵是我的開發板只有16M的NORFLASH,華恆的板子真會賺錢,故意留個NANDFLASH不給你焊接上去,唉這麼小的ROM只能望QT興嘆了)不過MiniGUI做的不錯,玩了玩他們自帶的掃雷啥的小遊戲,還挺爽的。



華恆的S3C2440的光盤裡面已經講交叉編譯環境下的Minigui給你做的七七八八了。下面是華恆的交叉編譯環境的搭建步驟


A.編譯minigui(在libminigui-1.3.3目錄下操作)


B.編譯minigui支援資源(在minigui-res-1.3.3目錄下操作)


C.編譯minigui的示例程式(在mg-samples-1.3.1mde-1.3.0目錄下操作)


D.以上步驟編譯出來的檔案放到檔案系統映像(ramdisk.image.gz)檔案去


為了方便,我們上述目錄和nfsroot目錄都放入一個HHTECH字母打頭指令碼檔案,執行相應指令碼檔案,就可以完成一系列的操作,可以使用vi開啟相關檔案看看,所做的操作將在下面介紹移植過程作出介紹。


A.在libminigui-1.3.3目錄下編寫了HHTECH.inst.lib指令碼檔案,執行此檔案就可以把mingui 的庫、包含檔案等檔案編譯好,以便後面操作。


B.在mingui-res-1.3.3目錄下編寫了HHTECH.inst指令碼檔案,執行此檔案,就可以把執行minigui示例程式時需要的相關資源拷貝到/HHARM2440/applications/minigui-free/nfsroot目錄的相關目錄下去。


C.在mg-samples-1.3.1和mde-1.3.0目錄下編寫了HHTECH.compile.mg指令碼檔案,執行此檔案,在mg-samples-1.3.1/src和mde-1.3.0/bomb目錄及其它目錄下就可以生成minigui的示例,mg-samples目錄下是一些簡單的示例,mde-1.3.1目錄下是複雜一些的示例或應用程式。這些應用程式需要客戶可以自行選擇哪些拷貝到檔案系統(ramdisk.imag.gz)中去。我們已經拷貝了mg-samples-1.3.1/src/目錄下的treeview到我們帶的檔案系統映像檔案



不是用的華恆的板子的兄弟們也不用急,因為華恆只給了交叉編譯環境的,為了開發方便,我們換需要搭建在PC環境下的Minigui。具體的移植搭建方法完全一樣,只是用的編譯工具不同,一個是gcc一個是arm-linux-gcc


為了與交叉編譯環境相容,我選擇了minigui1.3.3版本



那麼開始移植吧:



1.       安裝Minigui


1)首先下載Minigui的軟體:



Minigui的庫檔案



minigui 所使用的資源,包括基本字型、圖示、點陣圖和滑鼠游標     


這兩個包的下載需要你在www.minigui.com    上註冊過才可以下載,免費註冊的,自己去下吧




一些小例子


2)下載支援的庫檔案


這裡注意的是檢視你的linux裡面有沒有jpeg, png ,ttf ,lz這些庫檔案


可以利用解壓縮libminigui-1.3.3下的configture進行驗證:


 # tar  zxf  libminigui-1.3.3.tar.gz


    # cd libminigui-1.3.3


# ./configure     


    注意看configure的資訊,如果有:


checking for FrameBuffer console support... yes


checking for pthread library... yes


checking for TT_FreeType_Version in -lttf... yes


checking for jpeg_std_error in -ljpeg... yes


checking for png_check_sig in -lpng... yes


   如果裡面有“no”的話,不用編譯了,先把相關的庫裝起來在編譯libminigui。由於我的什麼庫都沒有因此都要安裝,下面詳細介紹:



A:首先安裝 zlib 庫,這個是後面的庫的編譯基礎。


http://www.zlib.net/zlib-1.2.3.tar.gz 


400多K,去下載吧,



儲存到一個目錄下後(如  /minigui)


# tar zxf zlib-1.2.3.tar.gz


   #  cd  / zlib-1.2.3


#  ./configure  --shared                  編譯成動態庫


#  make


# make install                           安裝



B:安裝png庫


# tar zxf libpng-1.0.10rc1.tar.gz


# cd libpng-1.0.10rc1


Libpng 不提供有效的 configure 指令碼,所以只好自己動手改 Makefile 檔案了。可以把 Scripts  下的一個 makefile拷出來自己動手改


# cp scripts/makefile.linux  Makefile  


   #  make


#  make install



C:安裝libjpeg-6b


tar xzvf jpegsrc.v6b.tar.gz


cd jpeg-6b


.   /configure --enable-static --enable-shared --prefix=/usr       //關鍵這樣才能生成要求的庫檔案


make


mkdir /usr/man/man1                //必須件這個資料夾否則安裝出錯


make install



D:安裝ttf


這個比較麻煩一點。


# tar zxf  freetype-1.3.1.tar.gz       //老一套


# cd freetype-1.3.1   //進到目錄裡去


# mkdir –p  /opt/ libttf/extend   // 自己另外建立一個目錄


# cp freetype-1.3.1/lib/*  freetype-1.3.1/lib/arch/ansi/*  libttf/  //把有用的東西拷出來


#cp freetype-1.3.1/lib/extend/*  libttf/extend/    把 extend 目錄下的檔案也拷出來


                                         就是拷貝到自建的目錄/opt/ libttf/


注意 cp 命令不要用 –r 選項,因為會把一些沒用的東西出拷出來的



拷貝完成了,現在來自己手動編譯了



# cd libttf


# gcc -c -fPIC -O2 freetype.c         //不要奇怪,對,我們只要編譯這一個 .c 文


//因為它包括了其它所有的 .c 檔案了,你可以自己檢視它的內容  


# gcc -c -fPIC -O2 -I./  extend/*.c   把 extend 下所有的 .c 檔案全部編譯


# gcc --shared -o libttf.so  *.o    生成最後的動態連結庫,OK了



把編譯好的東東拷貝到系統路徑



mkdir –p /usr/local/ include/freetype1/freetype



cp *.h  extend/*.h   /usr/local/ include/freetype1/freetype


cp libttf.so  /usr/local /lib



安裝庫完成,哈!




3)編譯libminigui-1.3.3


# tar  zxf  libminigui-1.3.3.tar.gz


    # cd libminigui-1.3.3


# ./configure                              //這是應該全是yes    


# make


# make install


4)編譯安裝minigui-res-1.3.3               //不會有問題的


# tar  zxf  minigui-res-1.3.3


    # cd minigui-res-1.3.3


# ./configure                               


# make


# make install





#  tar zxf popt-1.7.tar.gz


# cd popt-1.7


# ./configure --enable-shared --enable-static


# make


# make install



6)啟用FramebeBuffer



 這裡很重要:


# cd  /boot/grub


# vim menu.list


grub.conf其實是grub載入程式menu.lst 符號連線檔案指向的引導選單, 再其中加


title MiniGUI FrameBuffer
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-8 ro root="LABEL/" vga="0x0314" fb:on


意思是引導標題MiniGUI FrameFuffer模式 root 所在第一IDE硬碟的第一分割槽做為引導分割槽kernel 核心的路徑在/boot下名為vmlinuz-2.4.20-8的檔案,ro是以只讀方式掛接 root="LABEL/vga"=0x0314 意為使用800*600的分辯率,如要使用640*480分辯率自行改為vga=0x0311 使用1024*768分辯率請改為vga=0x0317 , 後面的fb:on 是關鍵,它就是開啟核心FrameBuffer顯示模式的關鍵引數,重新啟動後你就可以看到螢幕左上角可愛的小啟鵝了。


6)修改MiniGUI.cfg


MiniGUI 有兩種執行方式,一個是利用qvfb開啟模擬環境,他需要X圖形支援,由於我的linux沒有安裝這些庫,他們的以來關係有太複雜所以我沒有選,選擇了另一種更簡單的方式就是在 Console 下在 Framebuffer 上執行,這種方式也帶來很多麻煩,後面介紹。



修改 /usr/local/etc/MiniGUI.cfg 檔案,如下



[system]


# GAL engine


gal_engine=fbcon


  //這裡修改



# IAL engine


ial_engine=console


  //這裡修改



mdev=/dev/mouse


mtype=none   //這裡改成none,因為經常滑鼠不正常



[fbcon]


defaultmode=800x600-16bpp       //與前面的vga=0x0314匹配



[qvfb]


defaultmode=640x480-16bpp    


display=0



重啟動你的 RedHat 9 ,在出現 Grub 的時候按 E 鍵,在 kernel =…..      這一行的最後加入  vga=0x314  ,然後 Enter,然後在 kernel=…  這一行上按 b  就可以了,這時候可以在啟動時看到一個小企鵝的圖示,OK



7)修改預設庫路徑


修改你的 /etc/ld.so.conf 檔案,在裡面最後新加入一行 /usr/local/lib


#  ldconfig



8)編譯例程


還記得前面讓你下載的 mg-samples-1.3.0.tar.gz 這個包吧,這個就是一些例子,現在試試吧:


# tar zxf mg-samples-1.3.0.tar.gz


# ./configure


# make


# cd src


看看 src 目錄下是不是已經編譯出可執行檔案來了



8)執行程式


前面說採用fbcon]的方法不好,就在這裡體現了,我在這裡被卡了很久。一切Minigui的程式都不能在圖形介面下執行,否則會衝突早成花屏,好像沒有很多人提出這個解決方法,搞的的卡了很久,也許他們都用qvfb模式了吧。


解決方法就是進入純字元模式:


可以按 ctrl+Alt+F5(用虛擬機器的兄弟注意:先把虛擬機器的引數-à熱鍵改成ctrl+Alt+Shift否則會衝突,不響應)


在純字元下我們可以執行剛才編譯好的程式:


# cd …./mg-sample*


# cd /src


# ./helloworld


可以看到我們的程式跑起來。



 


另外回到圖形介面可以使用指令:


# init 3   (進入字元介面是  #  init5)


來回的切換非常慢,中間還要輸入使用者名稱和密碼,大家可以參考別人的部落格,移植qvfb模式。更方便。