• 8095阅读
  • 1回复

新手求助 关于libqte-mt.so和libqte.so的问题 [复制链接]

上一主题 下一主题
离线468357
 

只看楼主 正序阅读 楼主  发表于: 2007-02-07
新手求助 关于libqte-mt.so和libqte.so的问题
我想在自己的手机上开发一些QT程序 手机自带了一个QT库libqte-mt.so.2.3.8(没有libqte.so) 自己下了一个qt-embedded-2.3.10 把手机自带的 libqte-mt.so.2.3.8放到lib下 尝试编译simple里面的qdir 编译时用-lqte-mt参数 -Wall -W -DNO_DEBUG加了-DQT_THREAD_SUPPORT编译时出现一大堆未定义的函数(换libqte-mt.so.2.3.10也一样), 如果我用-lqte就可以编译通过但是 手机上运行时必须加-qws参数 这样会造成系统按键冲突和死机。 所以我只能用手机原有的libqte-mt.so.2.3.8加-lqte-mt来编译的程序在手机上不加-qws参数才能正常运行, 但这样编译qdir或者其他的expamle程序都会出现很多没有定义的函数。libqte-mt.so和libqte.so这两个库会区别很大吗?我只知道libqte-mt.so是支持多线程的,可是他们只差了2K字节阿,难道他们用2套不同的函数?
我怎么才能用-lqte-mt来正常编译example里面的那些程序呢?才开始接触qt google找了个通宵也没有结果TT 请高手版主指点一下 不胜感激.
离线uniquezhu
只看该作者 1楼 发表于: 2007-02-12
想问下,你用的是不是MOTO的手机,用EZX平台开发的,如果是的话,你可以看下下面的文章。

【转贴】原贴链接:http://club.ccmove.com/nclub/topicdisplay.aspx?boardid=1189&pageno=1&TopicID=430652


感谢所有发布编译心得的XD。呼吁XD发扬Linux精神,将所开发的程序开放源代码,实在舍不得,部分开放也行。向 MFC 的 blackhawk和yutian_tj等大侠致敬。

感谢yutian_tj和OopsWare两位大侠的支持!!!

感谢yutian_tj的鼓励!!!

谢谢加精!!!


一、先说所需要的资源(有教程没有资源也白搭):
1、VMware-workstation-5.5.1-19175.exe
2、VMware Workstation V5.5.1 Build 19175 汉化补丁HF_VMware551.exe

下载地址http://www.onlysea.com/Software/Catalog12/4534.html

3、redhatlinux9安装包
下载地址http://www2.piaodown.com/down/soft/855.htm

4、xscale-gcc-vfp-3.3.tar.gz
下载地址:ftp://e680:e680@e680.3322.org:1680/===== 软件 =====/编程工具/xscale-gcc-vfp-3.3.tar.gz
5、ezx-sdk.tar.gz
6、qt-2.3.gz
7、Other_lib_headers.tar.gz
下载地址:ftp://down:ccmove.com@211.14.138.2/游戏软件/E680i专区/EZX.rarEZX.rar内有第5、6、7项三个文件。
8、tmake-1.8.tar.gz
下载地址:ftp://ftp.trolltech.com/freebies/tmake/tmake-1.8.tar.gz
9、lib.tar.gz:E680i的库文件:Telnet到手机或用Qonsole工具tar出来备用:

tar zcvf /mmc/mmca1/lib.tar.gz /usr/lib
再从SD卡上将lib.tar.gz copy出来。

第4、5、6、7、8项资源在2号和3号服器上有,不过很难连上,我断断续续的下了3个月,直到上个星期五才下全。我的经验是:凌晨5:00-8:30,速度最快,用FlashGet开单线程,单连接,重复连接不限次数。谁有高速空间,我来上传。有其他办法也请告诉我。

二、手机环境:行货E680i-ABP ,刷了爽版ABP。
计算机环境:P4-2.6G ,256M ,1GU盘 ,加装虚拟光驱软件。
三、具体步骤:主要根据imkerberos大侠的帖子,综合了OopsWare和JetJoe等XD发布的方法,修改而成,我研究了两天(Linux我也是现学现卖, c语言懂一点点),重复了N次(仅Linux我就安装了3遍),只要安装了上面的资源,按下面的教程,保证能顺利编译出自己的程序。
1、安装虚拟光驱(DAEMON V3.47),用来加载Iso文件。下载地址:http://download.pcworld.com.cn/download/545.html

2、安装VMware-workstation和Redhat9.看66楼,注意以下几点:
a、安装完成后创建一个用户kerberos,创建后在/home/下会有一个kerberos目录。方便后面的环境设置。
b、以root身份登录,方便装载Usb,Cdrom设备,后面与WinXP交换文件时要用到。
c、退出时,要按照正常关机程序退出,否则损坏有关文件(因此我重装了3遍)。
d、最好安上图形环境,方便操作。

3、Linux和WinXP交换文件的方法:
推荐安装VMware tools ,方法在133楼。

用U盘:先在Xp下把文件复制到U盘上,然后挂到Linux下:挂载方法:
a、让Redhat9识别到U盘,选择菜单“虚拟机->可移动设备-->Anonymous Vendor……端口1”;
b、在/mnt下新建usb目录,如果存在则忽略这一步,用命令或图形环境:
命令:
cd /mnt
mkdir usb
cd /
c、加载U盘到/mnt/usb
命令:mount -t vfat /dev/sdb1 /mnt/usb
(有时会不成功,可以重启计算机,按程序再试)
d、卸载U盘,命令:umount /mnt/usb

用虚拟光驱:把以上文件制成ISO格式的文件(用UltraISO软件,下载地址:http://soft.hackbase.com/36/20051016/7986.html),加载到虚拟光驱后,用以下命令加载光驱:mount /dev/cdrom /mnt/cdrom卸载光驱:umount /mnt/cdrom

还有其他方法自己找吧。

4、安装 xscale-gcc-vfp-3.3.tar.gz,安在/usr/local/arm目录下:
把xscale-gcc-vfp-3.3.tar.gz复制到根目录下(和root文件夹在同一目录),新建一终端(鼠标右键点桌面就会看到或在红帽子里的系统工具中找),执行以下命令:
cd /
tar xvzf xscale-gcc-vfp-3.3.tar.gz

(原贴中tar xvzf -C / xscale-gcc-vfp-3.3.tar.gz无法执行,不知错在哪里,请知道的大侠解释一下)

不加EZX环境,用 arm-linux-gcc 编译最简单的c程序:
helloworld.c :

main()
{
printf("Hello Moto!\n");
}

用 arm-linux-gcc 编译这个程序

arm-linux-gcc helloworld.c

生成 a.out 文件,复制到SD卡上,telnet 上去或者用Qonsole直接在手机上运行命令:
cd mmc/mmca1
./a.out
显示 Hello Moto!

5、在/home/kerberos/下面创建e680目录,把第5、6、7、8、9项文件复制到这个目录下。执行以下命令:

cd /home/kerberos/e680
tar xvzf qt-2.3.gz
tar xvzf ezx-sdk.tar.gz
tar xvzf Other_lib_headers.tar.gz
tar xvzf lib.tar.gz
tar xvzf tmake-1.8.tar.gz
完成后生成了以下目录(在e680目录下):qt-2.3.6、ezx、other、usr、tmake-1.8

6. 拷贝头文件:
把ezx和 other中include目录下的头文件拷贝到qt的头文件目录中(最好用图形窗口操作,复制--粘贴),命令如下:
cp ezx/include/* other/include/* qt-2.3.6/include

7. 拷贝E680i上的库文件:E680i的库文件在usr目录中
a、把usr/lib/ezx/lib/ 目录下的所有文件,包括子目录复制到qt-2.3.6的lib目录下
b、把usr/lib/目录下libezx打头的文件复制到qt-2.3.6的lib目录下

8. 设置tmake:

a、复制(不是更改)linux-arm-g++为linux-e680-g++,命令如下:
cd tmake-1.8/lib/qws
cp linux-arm-g++ linux-e680-g++ -r
b、到linux-e680-g++目录下,用gedit打开tmake.conf 文件(在右键菜单-打开方式中)或用命令:vim linux-e680-g++/tmake.conf(vim我不会用,请自行研究)
c、修改tmake.conf文件,具体改这么几行:
感谢OopsWare和yutian_tj两位大侠的指点和帮助
把53、54行重新修改如下:

TMAKE_LIBS_QT = -lezxappbase-xscale-r -lqte-mt-xscale-r -lezxjpeg-xscale-r -lezxnotification-xscale-r
TMAKE_LIBS_QT_THREAD = -lqte-mt
这样可以成功编译EZX.rar包里的hello和myedit两个源文件,不过运行有问题,需要修改源程序。

这是原来的修改:
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-xscale-r (这样是为了连接 EZX库)


9. 编辑源程序:
a、新建一个testezx目录,放置源程序文件.
cd /home/kerberos/e680/
mkdir testezx
cd testezx
b、编辑一个工程文件( 可以用gedit或vim): testezx.pro
文件内容:
TEMPLATE = app
CONFIG += qt thread release warn_off
TARGET = testezx

HEADERS +=

SOURCES += test.cpp
LIBS +=
c、编辑源文件test.cpp:
文件内容如下:
#include <qapplication.h>
#include <qwidget.h>
#include <ZApplication.h>
#include <ZMainWidget.h>

int main (int argc, char** argv)
{
QApplication app (argc, argv);

QWidget* w = new QWidget ;

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

return app.exec();
}

10.编译程序
a、设置环境变量(这个很重要),输入命令:
export PATH=/usr/local/arm/bin:/home/kerberos/e680/tmake-1.8/bin:$PATH
export QTDIR=/home/kerberos/e680/qt-2.3.6
export TMAKEPATH=/home/kerberos/e680/tmake-1.8/lib/qws/linux-e680-g++


b、编译程序:在testezx目录下输入命令:
tmake testezx.pro > Makefile
make

11、 运行程序:
把 testezx 拷贝到SD卡上,telnet(不会telnet,用Qonsole也可以) 到小E上。运行命令:


设置手机环境:
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
export EZX_RES_ICON_PATH=/usr/language/icon

简单的设置方法:# . /home/native/.profile

cd mmc/mmca1
./testezx
你就看见一个空的窗口,如下面的图示,兴奋吧.


12、制作MKPG安装文件:

MKPG 是 tar.gz 的文件,要加上 Gzip 压缩:

A、Desktop文件设置:

a、Desktop文件格式:
[Desktop Entry]
BigIcon= ##大图标,缩列图显示用
Comment= ## 注释
Exec= ## 运行程序名称
Icon= ## 小图标,列表显示用
Name= ## 显示的名称
OsVersion=1.0
Shared=1
Type=Application

b、用UltraEdit新建test.desktop文件 ,输入下列内容:
[Desktop Entry]
BigIcon=test.png
Comment=TestSoft by 有恒
Exec=Test.lin
Icon=test_sm.png
Name=Test
OsVersion=1.0
Shared=0
Type=Application
B、lin文件设置:用UltraEdit(下载地址:http://www.skycn.com/soft/2249.html)新建Test.lin文件,输入下列内容:
#!/bin/bash
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
export EZX_RES_ICON_PATH=/usr/language/icon
exec /mmc/mmca1/.system/QTDownLoad/test/testezx
C、制作两个图标test.png(尺寸37*32像素)test_sm.png(尺寸28*24像素 )

D、新建test文件夹,把编译好的 testezx 文件和Test.lin、test.desktop、test.png、test_sm.png 等文件放入。
E、运行命令:
tar cfz test.tar.gz test

13、把 test.tar.gz改成test.mpkg,复制到手机上安装,大功告成!!!!!!!!!!
快速回复
限100 字节
 
上一个 下一个