MiniGUI交叉編譯過程------------------------------------------------------------------------------------------------
第一步:首先建立新目錄
[root@localhost /]# mkdir -p /root/cross
第二步:安裝 zlib 庫,這個是後面的庫的編譯基礎。
從http://www.zlib.net/zlib-1.2.3.tar.gz 400多K,下載到目錄 /root/cross 下
[root@localhost cross]# tar zxvf zlib-1.2.3.tar.gz
由於 zlib 庫的configure 腳本不支持交叉編譯選項,只好自己手動臨時把 gcc 修改成指向我們的交叉編譯器 arm-linux-gcc
[root@localhost cross]# cd /usr/bin/
[root@localhost bin]# mv gcc gcc_back
[root@localhost bin]# ln -s /usr/local/arm/3.4.1/bin/arm-linux-gcc ./gcc
[root@localhost bin]# mv ld ld_back
[root@localhost bin]# ln -s /usr/local/arm/3.4.1/bin/arm-linux-ld ./ld
修改完成後回到 /root/cross/zlib-1.2.3 目錄下:
[root@localhost bin]# cd /root/cross/zlib-1.2.3
[root@localhost zlib-1.2.3]# ./configure --prefix=/usr/local/arm/3.4.1/arm-linux --shared
注意:這裏配置指向/usr/local/arm/3.4.1/arm-linux 目錄,會自動安裝在 /usr/local/arm/3.4.1/arm-linux / [include,lib] 目錄下。
[root@localhost zlib-1.2.3]# make
[root@localhost zlib-1.2.3]# make install
安裝完後檢查一下目錄 /usr/local/arm/3.4.1/arm-linux / [include,lib] ,假如 include 中沒有 zlib.h 之類的頭文件,lib 中沒有 libz.so.1.2.3 ,那就自己手動拷到這些目錄下去,記着拷的時候把所有的 *.h 都需要拷過去,在拷庫的時候用 cp –a libz.* /…./lib 就行,要用上 –a 選項
注意:記着把剛纔改過的 gcc 再改回去,不然後面會出錯的!!!!!(一定記得改)
[root@localhost zlib-1.2.3]# cd /usr/bin/
[root@localhost bin]# mv gcc_back gcc
mv:是否覆蓋“gcc”? y
[root@localhost bin]# mv ld_back ld
mv:是否覆蓋“ld”? y
第三步:安裝 png 庫,這個是用來顯示 png 圖形的,MiniGUI 裏很多圖都是 png 的,如果沒有這個庫,你的 MiniGUI 將無法正常工作。
從http://prdownloads.sourceforge.net/libpng/libpng-1.2.18.tar.bz2?download(png 庫)下載到/root/cross/下面
[root@localhost bin]# cd /root/cross/
[root@localhost cross]# tar xjvf libpng-1.2.18.tar.bz2
[root@localhost libpng-1.2.18]# cd libpng-1.2.18
[root@localhost libpng-1.2.18]# ./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux prefix=/usr/local/arm/3.4.1/arm-linux
[root@localhost libpng-1.2.18]# make
[root@localhost libpng-1.2.18]# make install
安裝結束後,查看下/usr/local/arm/3.4.1/arm-linux/目錄下的 lib 文件夾裏是否有 libpng.a,libpng.so 等文件和 include 文件夾裏是否有 png.h,pngconf.h 文件以及 libpng12 文件夾。
第四步:安裝 jpeg 庫
從http://download.enet.com.cn/html/242232006010901.html(jpeg 庫)下載到/root/cross/下面
[root@localhost libpng-1.2.18]# cd /root/cross/
[root@localhost cross]# tar zxvf jpegsrc.v6b.tar.gz
[root@localhost cross]# cd jpeg-6b/
[root@localhost jpeg-6b]# ./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux prefix=/usr/local/arm/3.4.1/arm-linux --enable-shared
注意:在 make 之前,需從前面 libpng-1.2.18 的源碼目錄中把 libtool 拷貝過來,放在/home/source/minigui/jpeg-6b目錄下,否則會出錯。
[root@localhost jpeg-6b]# cp ../libpng-1.2.18/libtool .
[root@localhost jpeg-6b]# make
注意:在 make install 之前需創建一個目錄,否則 make install 的時候會報錯。
[root@localhost jpeg-6b]# mkdir -p /usr/local/arm/3.4.1/arm-linux/man/man1
[root@localhost jpeg-6b]# make install
安裝結束後,查看下/usr/local/arm/3.4.1/arm-linux/目錄下的 lib 文件夾裏是否有 libjpeg.so,libjpeg.so.62.0.0 等文件和include 文件夾裏是否有 jpeglib.h 文件
第五步:安裝 libttf 庫,這個是 TrueType 字體的支持庫,用來顯示文字的。
從http://nchc.dl.sourceforge.net/sourceforge/freetype/freetype-1.3.1.tar.gz 下載到/root/cross/下面,只支持 1.3.1 版本的 ttf 庫:
注意:MiniGUI 的文檔說只支持 1.3.1 版本的 ttf 庫,不要把版本弄錯了
[root@localhost jpeg-6b]# cd /root/cross/
[root@localhost cross]# tar zxvf freetype-1.3.1.tar.gz
[root@localhost cross]# cd freetype-1.3.1
[root@localhost freetype-1.3.1]# mkdir -p /root/cross/libttf/extend
[root@localhost freetype-1.3.1]# cp ./lib/* ./lib/arch/ansi/* /root/cross/libttf/
cp: 略過目錄 “./lib/arch”
cp: 略過目錄 “./lib/extend”
[root@localhost freetype-1.3.1]# cp ./lib/extend/* /root/cross/libttf/extend/
[root@localhost freetype-1.3.1]# cd ../libttf/
[root@localhost libttf]# arm-linux-gcc -c -fPIC -O2 freetype.c
[root@localhost libttf]# arm-linux-gcc -c -fPIC -O2 -I./ extend/*.c
[root@localhost libttf]# arm-linux-gcc --shared -o libttf.so *.o
現在手動安裝,得自己建立一下目錄:
[root@localhost libttf]# mkdir -p /usr/local/arm/3.4.1/arm-linux/include/freetype1/freetype
[root@localhost libttf]# cp *.h extend/*.h /usr/local/arm/3.4.1/arm-linux/include/freetype1/freetype
[root@localhost libttf]# cp libttf.so /usr/local/arm/3.4.1/arm-linux/lib
安裝庫完成。
第六步:編譯安裝 miniGUI 資源包 minigui-res-1.3.3
從http://www.minigui.com/download/minigui-res-1.3.3.tar.gz (miniGUI資源包)下載到/root/cross/目錄下。
[root@localhost libttf]# cd /root/cross/
[root@localhost cross]# tar zxvf minigui-res-1.3.3.tar.gz
[root@localhost cross]# cd minigui-res-1.3.3
[root@localhost minigui-res-1.3.3]# make install
注意:在/usr/local/lib目錄下生成一個minigui目錄,切記後面一定要將此處的資源包拷過去
第七步:配置編譯安裝 MiniGUI
從http://www.minigui.com/download/libminigui-1.3.3.tar.gz (miniGUI庫) 下載到/root/cross/目錄下:
MiniGUI 1.3.3 版本在鏈接 ljpeg lpng 時總是要鏈接 /usr/lib 下的庫,沒辦法,只好用前面的方法,使用備份和軟連接的方法。
[root@localhost cross]# cd /usr/lib
[root@localhost lib]# mv libjpeg.so libjpeg.so_back
[root@localhost lib]# mv libpng.so libpng.so_back
[root@localhost lib]# cp /usr/local/arm/3.4.1/arm-linux/lib/libttf.so .
[root@localhost lib]# ln -s /usr/local/arm/3.4.1/arm-linux/lib/libpng.so ./libpng.so
[root@localhost lib]# ln -s /usr/local/arm/3.4.1/arm-linux/lib/libjpeg.so ./libjpeg.so
[root@localhost cross]# cd /root/cross/
[root@localhost cross]# tar zxvf libminigui-1.3.3.tar.gz
[root@localhost cross]# cd libminigui-1.3.3
[root@localhost libminigui-1.3.3]# make menuconfig
在GAL engine Options裏
(NEWGAL)GAL and its engines
[*] NEWGAL engine on Linux FrameBuffer console
[ ]NEWGAL engine on Qt Virtual FrameBuffer
[ ]NEWGAL engine on eCos LCD interface
[*] Dummy NEWGAL engine
[*]Have console on Linux FrameBuffer
在 Font Option裏
[*]Raw bitmap font
[ ] Var bitmap font
[*]Incore font sansserif
[*]Inclore font courier
[*]Incore font symbol
[*]Incore font vgas
[*]Qt Prerendered Font
[ ] TrueType font
[ ]Adobe Typel font
NOTE:上面朗格需要編譯安裝的字體庫,在MiniGUI官網上有的下。
在Image Options裏
[*]Include SaveBitmap-related functions
[ ] PCX file support
[ ] LBM/PBM file support
[ ]TGA file support
[*]GIF file support
[*]JPG file support
[*]PNG file support
在Development EnvironmentOption裏
(Linux)Platform
(arm-linux-gcc)Compiler
(glibc)Libc
--Installation options
Path prefix:”/usr/local/arm/3.4.1/arm-linux”
配置之後,進行編譯安裝:
[root@localhost libminigui-1.3.3]# make
[root@localhost libminigui-1.3.3]# make install
安裝結束後,查看下/usr/local/arm/3.4.1/arm-linux/目錄下的 lib 文件夾裏是否有libminigui.so, libmgext.so, libvcongui.so 等文件和 include 文件夾裏是否有 minigui 文件夾 (內有 minigui 相關的頭文件)。
注意:現在不要忘記把前面剛剛備份的改回來。
[root@localhost libminigui-1.3.3]# cd /usr/lib
[root@localhost lib]# mv libjpeg.so_back libjpeg.so
mv:是否覆蓋“libjpeg.so”? y
[root@localhost lib]# mv libpng.so_back libpng.so
mv:是否覆蓋“libpng.so”? y
[root@localhost lib]# mv libttf.so_back libttf.so
mv:是否覆蓋“libttf.so”? y
注意:現在把上面編譯的資源包/usr/local/lib/minigui/下的res目錄拷到/usr/local/arm/3.4.1/arm-linux/lib/minigui/下!!!!!!!!!!!!
[root@localhost libminigui-1.3.3]# cp -a /usr/local/lib/minigui/res/ /usr/local/arm/3.4.1/arm-linux/lib/minigui/
第八步:安裝 popt 庫,這個庫在編譯 mde 程序時需要使用,不然編譯沒法通過
從http://gd.tuwien.ac.at/utils/rpm.org/dist/rpm-4.1.x/popt-1.7.tar.gz 我是從這裏下載的,下載到/root/cross:
[root@localhost libminigui-1.3.3]# cd /root/cross/
[root@localhost cross]# tar zxvf popt-1.7.tar.gz
[root@localhost cross]# cd popt-1.7
[root@localhost popt-1.7]# ./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux prefix=/usr/local/arm/3.4.1/arm-linux --enable-shared --enable-shared --enable-static
[root@localhost popt-1.7]# make
[root@localhost popt-1.7]# make install
安裝結束後,查看下/usr/local/arm/3.4.1/arm-linux/目錄下的 lib 文件夾裏是否有 libpopt.a,libpopt.la,libpopt.so.0.0.0 等文件和include 文件夾裏是否有 popt.h文件。
第九步:編譯綜合例子 mde-1.3.0
從http://www.minigui.com/downloads/minigui13/mde-1.3.0.tar.gz(綜合例子程序)下載到下載到/root/cross
[root@localhost popt-1.7]# cd /root/cross/
[root@localhost cross]# tar zxvf mde-1.3.0.tar.gz
[root@localhost cross]# cd mde-1.3.0
[root@localhost mde-1.3.0]# ./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux
[root@localhost mde-1.3.0]# make