Chinaunix首页 | 论坛 | 博客
  • 博客访问: 635503
  • 博文数量: 121
  • 博客积分: 8469
  • 博客等级: 中将
  • 技术积分: 1065
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 10:32
文章分类

全部博文(121)

文章存档

2013年(1)

2012年(15)

2010年(2)

2009年(8)

2008年(95)

我的朋友

分类: LINUX

2008-07-16 11:39:45

qtopia-2.2.0的交叉编译以及移植Ⅰ

主机环境:
   
系统:redhat 9 完全安装

交叉编译工具arm 2.95.3
   
设置好minicomnfs


开发板环境
   arm 2410s
   
640*480屏外加触摸屏
   cramfs
只读文件系统

 

Qtopia版本 2.2.0

建立arm-linux-gcc交叉编译环境

 

RedHat Linux系统下以root用户登录,

 

从光盘上将cross-2.95.3.tar.bz2文件复制到/usr/local目录下,或从网上下载一个cross-2.95.3.tar.bz2

 

 

安装:

# tar -jxvf cross-2.95.3.tar.bz2

这个命令会在你的/usr/local/arm/2.95.3目录下安装 arm-linux-gcc 交叉编译程序,

然后在PATH变量中添加一项:

export PATH=/usr/local/arm/2.95.3/bin:$PATH

 

测试:

# arm-linux-gcc -v

 

建立所需目录

mkdir /root/2410s  下载的软件包全部存放到这里

mkdir /root/2410s/armlib  编译软件得到qtopia所需要的库文件全部放在这里

mkdir /root/2410s/arminclude  编译软件得到qtopia所需要的头文件全部放在这里

 

需要的软件支持:

e2fsprogs 可以提供uuid支持

版本 e2fsprogs-1.39

 

libjpeg一个jpeg图形编码解码程序库

版本 jpeg-6b

下载地址

 

zlib 一个压缩解压程序库

版本 zlib-1.2.3.tar.gz

下载地址

The current release is publicly available here:

下列下载

 

tslib是一个触摸屏的库,它提供诸如滤波、去抖、校准之类的功能,为不同的触摸屏提供了一个统一的接口。

版本 tslib-1.3.tar.bz2

下载地址

注:我后来改称0.1.1版本了。

 

libpng一个png图形编码解码程序库

软件版本 libpng-1.2.16-config.tar.gz

下载地址

 

编译软件得到qtopia所需要的库文件以及头文件

 

编译e2fsprogs-1.39

要得到qtopia 所需的二個文件,uuid.h libuuid.so

 

cd /root/2410s/e2fsprogs-1.39

 

export PATH=/usr/local/arm/2.95.3/bin:$PATH

 

export CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc

 

./configure --enable-elf-shlibs --host=arm-linux

--with-cc=/usr/local/arm/2.95.3/bin/arm-linux-gcc

--with-linker=/usr/local/arm/2.95.3/bin/arm-linux-ld

--prefix=/usr/local/arm/2.95.3/arm-linux

 

make

 

 

**********

e2fsprogs-1.39/lib/目录下uuid的文件夹复制到2410s/arminclude

cp -r /lib/uuid /root/2410s/arminclude

cp lib/libuuid.so* /root/2410s/armlib /

*************

 

注:这步是交叉编译libuuid库,配置详情见./configure --help

 

jpeg:

cd /root/2410s/jpeg-6b

 

export PATH=/usr/local/arm/2.95.3/bin:$PATH

 

export CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc

 

     ./configure –enable-shared

     vi Makefile

     修改生成的Makefile文件

     prefix= /root/2410s/qt-2.3.10-arm

     CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc

     AR= /usr/local/arm/2.95.3/bin/arm-linux-ar rc

     AR2= /usr/local/arm/2.95.3/bin/arm-linux-ranlib

 

     cp jconfig.doc jconfig.h

     mkdir -p /root/2410s/qt-2.3.10-arm/man/man1

     make

     make install -lib

 

    *******

    报错,但是在/root/2410s/qt-2.3.10-arm/lib目录下生成了文件夹fontslibjpeg.so*

    ********

 

cp jpeglib.h /root/2410s/arminclude

cp lib/libjpeg.so* /root/2410s/armlib

 

就可以给qt-embedded添加好for armlibjpeg.

 

放到交叉编译的Lib一份

cp lib/libuuid.so* /usr/local/arm/2.95.3/arm-linux/lib

 

zlib:

     cd /root/2410s/zlib-1.2.3

 

     export PATH=/usr/local/arm/2.95.3/bin:$PATH

 

     export LD_LIBRARY_PATH=/usr/local/arm/2.95.3/arm-linux/lib:$LD_LIBRARY_PATH

 

     export CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc

 

      ./configure –shared

     vi Makefile

     修改:

     [begin]

     ...

     CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc

     ...

     LDSHARED=/usr/local/arm/2.95.3/bin/arm-linux-gcc -shared

-Wl,-soname,libz.so.1

     CPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc -E

     ...

     AR=/usr/local/arm/2.95.3/bin/arm-linux-ar rc

     RANLIB=/usr/local/arm/2.95.3/bin/arm-linux-ranlib

     ...

     prefix =/usr/local/arm/2.95.3/arm-linux

     ...

     [end]

 

     make

     cp libz.so* /root/2410s/armlib

 

     cp *.h /root/2410s/arminclude (我只拷贝了zlib.h)

 

 把生成的库文件libjpeg.so*向下面的目录中也拷贝一份:

/usr/local/arm/2.95.3/arm-linux/lib

 

     ****************

     切记设置

export  LD_LIBRARY_PATH=/usr/local/arm/2.95.3/arm-linux/lib:$LD_LIBRARY_PATH

     否则会出现错误,库会调用libc.so.6不是arm 而是x86

     chmod: error while loading shared libraries: libc.so.6: ELF file OS ABI invalid

     *******************

 

     libpng:

     cd /root/2410s/libpng-1.2.16

     cp  scripts/makefile.linux  ./Makefile

     vi Makefile

     修改:

     [begin]

     ...

     AR_RC=/usr/local/arm/2.95.3/bin/arm-linux-ar rc

     CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc

     ...

     RANLIB=/usr/local/arm/2.95.3/bin/arm-linux-ranlib

     ...

     prefix=/usr/local/arm/2.95.3/arm-linux

     ...

     [end]

 

     Make

 

     cp libpng12.so*  /root/2410s/armlib

 

     cp *.h /root/2410s/arminclude

 

      把生成的库文件libjpeg.so*向下面的目录中也拷贝一份:

/usr/local/arm/2.95.3/arm-linux/lib

 

确定生成ARM平台的二进制文件

******************

利用file命令确认生成的执行文件是否适合目标平台即生成ARM平台的二进制文件。

例如:

[root@team armlib]# file libpng12.so*

libpng12.so:          symbolic link to libpng12.so.0

libpng12.so.0:        symbolic link to libpng12.so.0.1.2.16

libpng12.so.0.1.2.16: ELF 32-bit LSB shared object, ARM, version 1

(ARM), not stripped

************************

 

编译触摸屏共享库tslib

  Qt/Embedded只支持鼠标和键盘的操作,但在大部分嵌入式系统中利用触摸屏,所以用户必须对触摸屏的相关操作编译成共享库或静态库。

 

参见:我的另一文档 http://blog.chinaunix.net/u1/33412/showart_282396.html

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