tiny6410的Qt4的移植和第一个Qt4软件的运行以及如何在qtopia下运行自己的qt4程序

开发环境:fedora9   linux-2.6.38   arm-linux-gcc 4.5.1

基于tiny6410的软硬件环境,tslib用的开发板文件系统自带的,用的一线校准,基本上是按照《Mini6410 Qt4和Qtopia编程开发指南-20110112》进行的移植,之所以要走一遍流程是为了接下来的不用一线校准的板子的开发。

这里主要总结一下遇到的问题及解决方法:

1、运行程序HelloQt4时,提示:./HelloQt4: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory

原因:

下面是setqt4env的内容:

#!/bin/sh

if [ -e /etc/friendlyarm-ts-input.conf ] ; then
        . /etc/friendlyarm-ts-input.conf
fi
true    ${TSLIB_TSDEVICE:=/dev/touchscreen}

TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_TSDEVICE
export TSLIB_CONFFILE

export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal

export QWS_DISPLAY=:1
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH         #export LD_LIBRARY_PATH=/opt/Qt4.7/lib  用这句话替换前面的,因为自己移植的Qt4放在了/opt目录
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin  

if [ -c ${TSLIB_TSDEVICE} ]; then
        export QWS_MOUSE_PROTO="Tslib MouseMan:/dev/input/mice"
        if [ ! -s /etc/pointercal ] ; then
                rm /etc/pointercal
                /usr/bin/ts_calibrate
        fi
else
        export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
fi

export QWS_KEYBOARD=TTY:/dev/tty1

export HOME=/root


2、程序运行后无法使用触摸屏

由于qtopia2.2和Qt4无法共存,所以在运行Qt程序前必须关掉qtopia2.2,之前忘记了这一点。

关闭方法:设置-->关机-->Terminate Server

自己的猜测:友善之臂开发板在qtopia2.2环境下运行Qt4程序,退出后又回到qtopia环境下,进行自由切换,用的就是这种原理,但是我在文件系统中在/bin目录下找到了启动qtopia的脚本qtopia,但是找不到关闭qtopia的脚本,至于友善之臂的qt软件实现这些切换的代码也就不知道了。


3、HelloQt4运行后字体很小

这是由于qt软件运用到嵌入式环境,屏幕分辨率比较小,字体也相应变小了,可以在编程中统一把字体设置大一点。

同时我也找到另外一种方法:

在 setqt4env 脚本中把

export QWS_DISPLAY=:1

改为:

export QWS_DISPLAY="LinuxFb:mmWidth160:mmHeight90:1"

问题解决

如果你已经运行过错误的 setqt4env 脚本。 那么你必须直接在console中直接

 export QWS_DISPLAY="LinuxFb:mmWidth160:mmHeight90:1"



另:由于不知道友善之臂具体是怎么用代码实现切换的,不过可以用另外一种方法实现在qtopia2.2下运行自己的qt4程序

修改 /bin/qt4 脚本,将下面这两行换成你的程序路径和名称:

cd /usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/embedded/fluidlauncher
./fluidlauncher -qws

然后在Qtopia2.2.0中点击Qt4的图标,应该可以运行自己的程序了,可以把相应的图标也替换掉。

 

————————————————————————————————————————————————————————

附:今天看到一个命令,exec

百度百科对他的解释如下:

exec函数族,顾名思义,就是一簇函数,他把当前进程映像替换成新的程序文件,而且该程序通常main函数开始执行!
用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其 main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。

看到进程ID没有改变,想到了Qtopia2.2和Qt4软件切换的问题,由于Qt4软件是用脚本来启动的,而且脚本最后有这样一句话

exec ./myplayer -qws 1>/dev/null 2>/dev/null

也就是说qt4软件的进程ID和脚本ID是一样的那么只要杀死这个ID,qt4软件就退出了。

切换的大致步骤:

kill掉qtopia2.2的进程,运行脚本,退出或kill掉启动qt4软件的脚本的ID,启动qtopia2.2。

又感觉不需要exec也可以这样,等以后再来看看,遇到新想法的话再来解决。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值