Chinaunix首页 | 论坛 | 博客
  • 博客访问: 375107
  • 博文数量: 110
  • 博客积分: 2990
  • 博客等级: 少校
  • 技术积分: 1295
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-05 08:42
文章分类

全部博文(110)

文章存档

2013年(1)

2012年(8)

2011年(22)

2010年(14)

2009年(65)

我的朋友

分类: LINUX

2009-03-20 11:18:37

文章出处:
 
这两天一直在按照如下的方法来交叉编译qtopia2.2.0,其中有些问题,已经用颜色标识



Qtopia PDA 2.2.2 交叉编译过程
By nanfansky@163.com
2006-12-10

HOST 环境:
    cpu:intel p4 2.8
    内存:1g
    系统:redhat 9 完全安装
   交叉工具arm 2.95.3(为了与开发板保持一致我采用的是3.4.1的交叉编译器)

TARGET环境
    arm 2440
    240*320屏外加触摸屏
   jffs2文件系统(我不清楚 )

软件:
    cross-2.95.3.tar.bz2
    qtopia-free-src-2.2.0.tar.gz
   
    e2fsprogs-1.35.tar.gz
    jpegsrc.v6b.tar.gz
    libpng-1.2.14.tar.bz2
     tslib-1.3.tar.bz2
     zlib-1.2.3.tar.bz2
   

    我的arm-linux-gcc 已安装到/usr/local/arm/2.95.3/bin/,并已设置$PATH变量

(最好设一下交叉编译器的路径 export CROSS=**/3.4.1 这样后面就比较方便

同时:export PATH=$CROSS/bin:$PATH)
编译步骤:
1.解压qtopia-free-src-2.2.0.tar.gz,将其mv qtopia-free-2.2.0 到 /home/qtopia_x86
       cd /home/qtopia_x86
      ./configure;make (gcc4.0不行,必须用gcc3版本)
    得到本机运行版本uic 工具
    解压qtopia-free-src-2.2.0.tar.gz 将其mv至 /home/nfs/qtopia-free-2.2.0/
       cp /home/qtopia_x86/qt2/bin/uic /home/nfs/qtopia-free-2.2.0/qt2/bin/
2.编译相关库
    将上面的e2fsprogs-1.35.tar.gz,jpegsrc.v6b.tar.gz, libpng-1.2.14.tar.bz2, tslib-1.3.tar.bz2, zlib-1.2.3.tar.bz2 解压至/home/arm目录,并相应更名目录为
       e2fs jpeg libpng tslib zlib
    并建立mkdir /home/arm/lib ;mkdir /home/arm/include (这两个目录是存放编译后的库与头文件,为后面交叉编译用)
    e2fs:
      ./configure --host=arm-linux --enable-elf-shlibs --with-cc=arm-linux-gcc --with-linker=arm-linux-ld --prefix=$CROSS/arm-linux
       make (编译的时候报错,不过可以进入include/uuid,运行make则会生成相应的库文件,再make install就会直接将相应的.so .h拷贝到
$CROSS/arm-linux下相应的文件夹中
)
      cp lib/libuuid.so* /home/arm/lib(不用)
   jpeg:
      ./configure –enable-shared
--prefix=$CROSS/arm-linux
       vi Makefile
       修改:
       CC= arm-linux-gcc
        AR= arm-linux-ar rc
        AR2=arm-linux-ranlib
       make (会报错,不过没关系)

      make install

   zlib:
       cd /home/arm/zlib
       ./configure –shared
--prefix=$CROSS/arm-linux
       vi Makefile
       修改:
      [begin]
      ...
       CC=arm-linux-gcc
      ...
       LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1
       CPP=arm-linux-gcc -E
      ...
       AR=arm-linux-ar rc
       RANLIB=arm-linux-ranlib
      ...
      prefix =/usr/local/arm/2.95.3/arm-linux(x)
      ...
      [end]

       make

      make install

      cp libz.so* /home/arm/lib/
       cp *.h /home/arm/include/


   
   libpng:
      /home/arm/libpng
       cp s/makefile.linux ./Makefile
       vi Makefile
       修改:
      [begin]
      ...
       AR_RC=arm-linux-ar rc
       CC=arm-linux-gcc
      ...
       RANLIB=arm-linux-ranlib
      ...
       prefix=
$CROSS/arm-linux
      ...
      [end]
      
       make
      cp libpng12.so* /home/arm/lib/
       cp libpng12.so /home/arm/lib/libpng.so
       cp *.h /home/arm/include/

      make install

     
    tslib:
      /home/arm/tslib
      ./autogen.sh
       echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
      ./configure --host=arm-linux
--prefix=$CROSS/arm-linux
--cache-file=arm-linux.cache –enable-inputapi=no
       在make之前,为了支持触摸屏,这里有一点小小的修改,打开src/ts_read_raw.c文件,查看你的触摸屏驱动程序数据结构,看与ts_read_raw.c结构中的哪个一样,就将代码中的
   char *defaulttseventtype="UCB1x00";(还没有改,不知道是什么)
    修改为
   char *defaulttseventtype="H3600";
//这里因为我的驱动是h3600_ts_event结构,修改为你驱动对应的结构,好了,如果你触摸屏驱动程序支持ioctrl操作,上面的 configure操作中的[—enable-inputapi=no]你可以删除。好了,现在可以make了,^_^

       make
      cp src/.libs/libts-0.0.so.0* /home/arm/lib/
       cp src/.libs/libts.so /home/arm/lib/
       cp src (X)

      make install

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