免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 721 | 回复: 0
打印 上一主题 下一主题

qtopia-2.2.0的交叉编译以及移植Ⅰ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-16 11:39 |只看该作者 |倒序浏览
[color="#d52847"]qtopia-2.2.0的交叉编译以及移植Ⅰ
主机环境:
    系统:redhat 9 完全安装
交叉编译工具arm 2.95.3
    设置好minicom和nfs
开发板环境
   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:

http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/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
http://e2fsprogs.sourceforge.net/

libjpeg一个jpeg图形编码解码程序库
版本 jpeg-6b
下载地址 http://www.ijg.org/

zlib 一个压缩解压程序库
版本 zlib-1.2.3.tar.gz
下载地址 http://www.zlib.net/
The current release is publicly available here:
下列下载

tslib是一个触摸屏的库,它提供诸如滤波、去抖、校准之类的功能,为不同的触摸屏提供了一个统一的接口。
版本 tslib-1.3.tar.bz2
下载地址 http://mirror1.pdaxrom.org/source/src/tslib-1.3.tar.bz2
注:我后来改称0.1.1版本了。

libpng一个png图形编码解码程序库
软件版本 libpng-1.2.16-config.tar.gz
下载地址 http://www.libpng.org/pub/png/libpng.html

编译软件得到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目录下生成了文件夹fonts和libjpeg.so*
    ********

cp jpeglib.h /root/2410s/arminclude
cp lib/libjpeg.so* /root/2410s/armlib

就可以给qt-embedded添加好for arm的libjpeg库.

放到交叉编译的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只支持鼠标和键盘的操作,但在大部分嵌入式系统中利用触摸屏,所以用户必须对触摸屏的相关操作编译成共享库或静态库。

参见:我的另一文档
[color="#800080"]http://blog.chinaunix.net/u1/33412/showart_282396.html
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/72751/showart_1083266.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP