分享
 
 
 

Linux手机DIY.库文件专题.兼容性问题

王朝system·作者佚名  2006-11-17
窄屏简体版  字體: |||超大  

Linux手机DIY.库文件专题.兼容性问题

草木瓜 于 2006-11-9

一、序

软件移植过程中,Linux操作系统的库文件着实令人头疼,这方面资料

也比较少。通过一段时间搜索查询推敲,写点总结吧,也算是有点成果。这

篇文章主要介绍在运行过程中出现的种种兼容性问题。

二、重要提示

为了方便更好的理解本文,提供下面链结。

全系列的文章地址,手机应用开发专栏:http://blog.csdn.net/liwei_cmg

相关的重要成果的下载地址:http://play.younet.com/view.php?tid=24045

三、初识兼容性问题

夏新E600和飞利浦968手机系统是十分相近的,内核版本信息也是一致的,

不过即便这样,在模拟器移植过程中,E600使用968的QT库,都会有按键问题。

显然这是硬件有所不同的原因。

Qnes模拟器能不能在E680上用呢,事实是不太可能的,因两者硬件差异太

大。以下描述我在E680上运行Qnes的提示信息。

我将一些夏新E600本身特有lib文件加上后,仍然使用E680本地的QT库,设

置好环境变量,运行会出现:

# ./r qnes

./qnes: relocation error: /mmc/mmca1/qnes/libcec.so.0: undefined

symbol: _ZThn184_N10QPopupMenu10updateItemEi

说明自带的QT库缺少函数。我把E600的libqte-mt.so.2,和fonts复制过去,

运行倒是可以,只不过是不正常的运行,提示如下:

======== 240 x 320 x 16

Default2: Cannot open /dev/ts (No such file or directory)

==========================================================

theme config file [../Settings/theme/010Gray.conf] doesn't exist!

JPEG parameter struct mismatch: library thinks size is 376, caller expects 372

QImage::measure fail to guess image format

csmCheckLimited : csm size 0/655360

csmConstruct : csm info

start 0x40551000

size 655360

could not open for writing `/Settings/cec.conf.new'

QCopChannel: no client registered for channel CEC/Desktop, not sending stopStartupAnimation()

...

QCopChannel: no client registered for channel CEC/IdleManager, not sending hideInputMethod()

...

在E680手机上倒是显示了个新界面,并有英文的Load和Back。通过提示可以

清楚看出因两者硬件的差异生成兼容性的问题。不过也证实了上篇文章的推论,

浮点格式不同,最多是浮点运算有误,但是程序还是可以链结运行的。造成什么

Segmentation Fault的错误,还是直接来源于硬件。

如我把E600的sysinfo放在E680运行会有如下提示:

======== 240 x 320 x 16

Default2: Cannot open /dev/ts (No such file or directory)

==========================================================

theme config file [../Settings/theme/010Gray.conf] doesn't exist!

QImage::measure fail to guess image format

csmCheckLimited : csm size 0/655360

create csm : exist

csmConstruct : csm info

start 0x40871000

size 655360

could not open for writing `/Settings/cec.conf.new'

Can't make QGfx for null pixmap

QPainter::begin: Unable to get graphics context

Segmentation fault

这个Segmentation fault可能来自于显示设备的,具体原因不详,如做

反汇编处理,会了解更多的信息。

四、测试简单的浮点运算

编译环境:

VFP gcc-3.3.2 glibc-2.3.2 binutils-2.15 kernel 2.4.20

FPA gcc-3.4.0 glibc-2.2.5 binutils-2.15 kernel 2.4.19

先简单写个命令行程序如下:

int main()

{

float fValueA=1.9;

float fValueB=2.8;

int iValueC=8;

int iValueD=9999;

printf("Hello!My E680G!\n");

printf("TestValue(4.7):%f\n",fValueA+fValueB);

printf("TestValue(9.9):%f\n",fValueA+iValueC);

printf("TestValue(10007):%d\n",iValueC+iValueD);

return 0;

}

1.vfp soft fp gcc-3.3.2 glibc-2.3.2 编译

arm-linux-gcc -o hellocmdvfp hello.c

2.fpa soft fp gcc-3.4.0 glibc-2.2.5 编译

(加参数 -msoft-float 也是完全一样的)

arm-linux-gcc -o hellocmdfpa hello.c

------------------------------------------------

E680运行结果:

# ./hellocmdvfp

Hello!My E680G!

TestValue(4.7):4.700000

TestValue(9.9):9.900000

TestValue(10007):10007

# ./hellocmdfpa

Hello!My E680G!

TestValue(4.7):-2.000000

TestValue(9.9):-2.000000

TestValue(10007):10007

FPA虽然有软浮点,但浮点运算依然出错。

------------------------------------------------

E600和968的运行结果:

#./hellocmdvfp

Hello!My E680G!

TestValue(4.7):-2.000000

TestValue(9.9):-2.000000

TestValue(10007):10007

#./hellocmdfpa

Hello!My E680G!

TestValue(4.7):-2.000000

TestValue(9.9):-2.000000

TestValue(10007):10007

-------------------------------------------------

出乎我的意料,在E600上,浮点运算居然全出错,后来偶然间用VFP格式

的arm-linux-g++编译:

arm-linux-g++ -o hellocmdvfp+ hello.c

#./hellocmdvfp+

Hello!My E680G!

TestValue(4.7):4.700000

TestValue(9.9):9.900000

TestValue(10007):10007

在E600上居然又运行正确,这令人十分奇怪。于是我再用FPA格式这样编

译:

arm-linux-g++ -o hellocmdfpa+ hello.c

因为是gcc.3.4.0版本,会提示libstdc++6.so.0和libgcc_s.so.1缺少。

加上库文件后运行结果如下(E680,E600,968结果完全一样):

#.hellocmdfpa+

Hello!My E680G!

TestValue(4.7):-2.000000

TestValue(9.9):-2.000000

TestValue(10007):10007

显然都是错误的。

五、总结

VFP格式在E600,968上运行,可以说是没有浮点BUG的。不过FPA却总

有问题。VFP编译环境在编译过程中不能兼容E600,968本身的库文件,所

以才要用FPA的编译环境。

浮点这个问题比较让人费解,还须要做进一步研究。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有