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.1和mde-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的軟件:
http://www.minigui.com/download/libminigui-1.3.3.tar.gz???
Minigui的庫文件
http://www.minigui.com/download/minigui-res-1.3.3.tar.gz?
minigui?所使用的資源,包括基本字體、圖標、位圖和鼠標光標?????
這兩個包的下載需要你在www.minigui.com????上注冊過才可以下載,免費注冊的,自己去下吧
http://www.minigui.com/downloads/minigui13/mde-1.3.0.tar.gz??????????圖形界面程序
http://www.minigui.com/downloads/minigui13/mg-samples-1.3.0.tar.gz???
一些小例子
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
?
?
5)最后,安裝?popt?庫,這個庫在編譯?mde?程序時需要使用,不然編譯沒法通過?:http://gd.tuwien.ac.at/utils/rpm.org/dist/rpm-4.1.x/popt-1.7.tar.gz???
#??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模式。更方便。
http://www.minigui.org/cgi-bin/lb5000/view.cgi?forum=6&topic=5548
總結
以上是生活随笔為你收集整理的Linux下Minigui开发环境的搭建(PC+S3C2440的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript 调试建议和技巧
- 下一篇: Ubuntu下嵌入式Qt开发环境配置全攻