最近买了个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时候的思路,呵呵,看来我的感觉越来越灵敏了。:)
阅读(1838) | 评论(0) | 转发(0) |