Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1146227
  • 博文数量: 221
  • 博客积分: 10152
  • 博客等级: 上将
  • 技术积分: 1518
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-22 10:42
文章分类

全部博文(221)

文章存档

2018年(1)

2015年(6)

2014年(3)

2013年(4)

2012年(1)

2011年(5)

2010年(14)

2009年(10)

2008年(28)

2007年(33)

2006年(114)

2005年(2)

我的朋友

分类:

2008-04-21 11:47:15

最近买了个E680的水货手机。本来我手里手机很多了,不过没有一个是Linux的,觉得比较可惜,这可是我的职业 :)。听说E680水货比较便宜,而且在"移动天使"()上的fans正DIY地热火朝天,比较眼热。 冲着E680的DIY性能,我决定买了一个。

在“移动天使”论坛上,大部分DIY的程序是从OPIE拿过来的,所以在E680上必须加载另外一个QT库和OPIE的库,比较浪费资源。幸亏liuto大侠拿到了EZX的SDK,我赶紧下载下来了。很可惜,是A760系列的SDK,E680上没法用。

幸 好liuto的ezx SDK有一些头文件,象Moto这种大公司,开发上应该保持连续性。所以我猜测EZX SDK的头文件应该变化不大,这样我就可以使用A760的EZX SDK 的头文件配合E680上的qt,ezx的库文件进行程序的交叉编译了。 果然,我成功了。

下面就是具体步骤:
所需要的资源:
    1. xscale-gcc-vfp-3.3.tar.gz
    2. ezx-sdk.tar.gz qt-2.3.tar.gz Other_lib_headers.tar.gz
    3. tmake-1.8.5
说明:
    1. 本来我手头上有一份 montavista 的gcc交叉编译环境,但是它没有包含VFP的支持,需要自己编译一份。在“移动天使”的2号ftp上(ftp://hbsztvu.cn) 9====工具====/编程工具 下有编译好的GCC。
    2. 在移动天使的3好服务器上有EZX.rar,这是A760系列的开发包,不能直接用在E680上,不过没有关系,我们只需要这个包里面的ezx-sdk.tar.gz 和 qt-2.3.tar.gz 中的一些头文件。
    3. 这个是Trolltech (qt的开发商)公司的一个为Qt项目生成Makefile的工具。当然你也可以使用自己的qmake (在Qt 3.x中使用 qmake, 而在qt 3.0 以前一直是使用tmake的).我懒得编译Qt了,所以直接使用了tmake,tmake是用perl写的,呵呵,不用编译。


步骤:
1. 安装 xscale-gcc-vfp-3.3.tar.gz:
    #tar xvzf -C / xscale-gcc-vfp-3.3.tar.gz
    gcc 的编译器就装在了/usr/local/arm下。
2. 解开 ezx-sdk 和 qt-2.3 的包

3. 去Trolltech () 的网站上去down tmake,安装。

4. 创建一个目录比如我的:
     mkdir /home/kerberos/e680/
     cd /home/kerberos/e680
     tar xvzf /qt-2.3.tar.gz的路径/qt-2.3.tar.gz
     qt 的目录是 qt-2.3.6
     tar xvzf /ezx-sdk.tar.gz的路径/ezx-sdk.tar.gz
     tar xvzf /Other_lib_headers的路径/Other_lib_headers.tar.gz
     ezx-sdk 的目录是 ezx, Other_lib_headers 的目录是other

5. 拷贝头文件:
     把ezx-sdk 和 other_lib_headers 解开的包的头文件拷贝到qt的头文件目录中:
     cp ezx/include/* other/include/* qt-2.3.6/include

6. 拷贝E680上的库文件:
     首先要把E680的的一些库文件拷贝出来,方便的方法是telnet到E680以后,使用samba协议拷贝
    \\169.254.142.2\system\usr\lib\ezx\lib\ 的库到qt-2.3.6的lib目录下
    \\169.254.142.2\system\usr\lib\libezx* 到qt-2.3.6的lib目录下
     拷贝过程中要注意,不要拷贝符号链接的库。:) 只有版本号最长的文件名的库才是真正的库文件。

7. 安装tmake:
    随便把tmake解开到某个目录中,比如我的在/home/kerberos/e680/tmake-1.8
    由于生成Makefile文件需要一些设置,我们这样来做:
    cd tmake-1.8/lib/qws
    cp linux-arm-g++ linux-e680-g++ -r
    vim linux-e680-g++/tmake.conf
    来修改tmake.conf文件,具体改这么几行:
    54 行: TMAKE_LIBS_QT_THREAD = -lqte-mt
    改成 TMAKE_LIBS_QT_THREAD = -lqte-mt-xscale-r -lezxappbase-xscale-r -lezxappsdk-xscale-r -lezxjpeg-xscale-r -lezxtapi-xs        cale-r -lezxfunlight-xscale-r
    这样是为了连接 EZX库

8. 设置环境变量:
    修改 /home/kerberos/.barshrc (你的可能在不同的用户目录下)
    增加以下几行:
    PATH=/usr/local/arm/bin:$PATH
    QTDIR=/home/kerberos/e680/qt-2.3.6
    TMAKEPATH=/home/kerberos/e680/tmake-1.8/lib/qws/linux-e680-g++
    export PATH TMAKEPATH QTDIR


    使环境变量生效:
    source /home/kerberos/.bashrc

9. 测试程序:

   cd /home/kerberos/e680/
   mkdir test
   cd test
   编辑一个工程文件: testezx.pro
   =====================以下是文件内容:
  TEMPLATE = app
  CONFIG += qt thread release warn_off
  TARGET = testezx

   HEADERS +=

   SOURCES += test.cpp
   LIBS +=
   ================文件内容结束

   编辑源文件:
   ===================== test.cpp 文件内容如下:
#include
#include
#include
#include

int main (int argc, char** argv)
{
        ZApplication app (argc, argv);
       /*
        * ZMainWidget 不能这样声明:
        * ZMainWdiget w (true, 0)
        * 这样声明程序运行就segment fault. 只能用指针方式,不知道为什么。
        */
        ZMainWidget* w = new ZMainWidget (true,0);
        if (w)
                w->showWithInputMethod(IMID_ENGLISH_KB);

        app.setMainWidget (w);
        w->show();

        return app.exec();
}
==================test.cpp文件内容结束

编译程序:
   tmake testezx.pro > Makefile
   make

10. 运行程序:
    把 testezx 拷贝到SD卡上,telnet 到小E上。运行:
   . /home/native/.profile
    注意 点后面有一个空格的。
    ./testezx
    你就看见一个空的窗口和一个英文键盘了。


基本上还是我没有拿到小E时候的思路,呵呵,看来我的感觉越来越灵敏了。:)
阅读(1817) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~