分类: LINUX
2009-07-07 14:12:54
交叉编译器:arm-linux-gcc 3.4.1
MiniGUI交叉编译过程------------------------------------------------------------------------------------------------
第一步:首先建立新目录
[root@localhost /]# mkdir -p /root/cross
第二步:安装 zlib 库,这个是后面的库的编译基础。
从 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/
[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 将无法正常工作。
从(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 库
从(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 字体的支持库,用来显示文字的。
从 下载到/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 -
[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
从 (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
从 (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/
注意:现在不要忘记把前面刚刚备份的改回来。
[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 程序时需要使用,不然编译没法通过
从 我是从这里下载的,下载到/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
从(综合例子程序)下载到下载到/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