Chinaunix首页 | 论坛 | 博客
  • 博客访问: 554829
  • 博文数量: 99
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1117
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-23 15:17
文章分类

全部博文(99)

文章存档

2011年(4)

2010年(13)

2009年(82)

我的朋友

分类: LINUX

2009-07-07 14:12:54

交叉编译器:arm-linux-gcc 3.4.1

MiniGUI交叉编译过程------------------------------------------------------------------------------------------------

第一步首先建立新目录

[root@localhost /]# mkdir -p /root/cross

第二步安装 zlib 库,这个是后面的库的编译基础

400K,下载到目录 /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 将无法正常工作。

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.alibpng.so 等文件和 include 文件夹里是否有 png.hpngconf.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.solibjpeg.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 -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

   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/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 程序时需要使用,不然编译没法通过

我是从这里下载的,下载到/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.alibpopt.lalibpopt.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

 

阅读(1672) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~