问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

tq2440怎么移植qt应用程序

发布网友 发布时间:2022-04-22 22:26

我来回答

1个回答

热心网友 时间:2023-09-08 06:39

您好,cd qt-4.6.3-x11
sourc qt_x11_setenv.sh
打开qtcreator,建立一个工程假设为form,完成后可以在虚拟机看下做的界面.
进入刚才建立的工程目录,
qmake -project
qmake
make
./form
就可以看到界面了
----------------------------------------------------------------------------------------------------
接下去是移植到开发板.
1. 把刚才做的界面源码复制到qt-4.6.3-arm
cd opt/qt-4.6.3-arm
source qt_arm_setenv.sh //因为要用到arm版的qmake, 环境变量要重新设置
qmake -project
qmake
make
./form
此时会提示错误打不开,是正常的,这是在arm板上运行的

2. 启动开发板,在根目录下建立tq2440和tslib 2个文件夹
//这里貌似QTDIR的路径要与电脑上一致,不然移植字体不识别,就是要把fedora10 系统的 usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib 复制到ARM的usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib

mkdir tq2440
mkdr tslib
把fedora10 系统里的usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib 整个lb文件夹拷到开发板/tq2440下
把tslib1.4.tar.gz 安装生成的tslib文件夹内容拷到开发板上/tslib
//tslib1.4的安装这里不赘述了,网上找个都没什么问题
现在,我们可以在开发板根目录看到tq2440和tslib这2个文件夹.
tq2440下有lib文件夹,tslib文件夹下有bin include etc lib 4个文件夹.
网上拷贝这些文件多是搭建nfs服务器做的,我是在虚拟机直接把这些文件夹打包(tar zcvf xx.tar.gz xx),共享传给我我的主机,然后主机通过secureCRT下载到开发板,就免去了搭nfs.

3. 在开发板的 /etc/profile中追加:
export QTDIR=/tq2440
export T_ROOT=/tslib
export PATH=$QTDIR/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=tslib:/dev/event0
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
这里需要注意3句代码:
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0
export QWS_MOUSE_PROTO=tslib:/dev/event0
有的开发板fb0 event0是在/dev/input/目录下的
所以要改为
export TSLIB_FBDEVICE=/dev/input/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
再执行一下:source /etc/profile 使系统更新一遍刚设置的系统环境变量.
验证变量设置是否成功,在开发板终端下执行
echo $QTDIR
如果显示/tq2440,则说明设置成功了

4 接下来我们还得设置一下触摸屏的配置文件ts.conf.
它在哪里呢?前面我们已经拷到开发板/tslib/下,那么tslib一共就有bin etc include lib 4个目录,而ts.conf就在etc目录下,开发板下用
vi /tslib/etc/ts.conf
把# mole_raw input
前面的“#”号去掉,然后把该行移至行首
现在差不多移植完成了,可以把自己用qtcreator写的程序下载到板子运行.
我是在板子目录下新建mkdir test文件夹
上文已经说到已经把qtcreator做的界面编译成arm版的了,现在把这个可执行文件form下载到开发板/test目录下
在开发板执行:
cd /test
chmod a+x form //提示权限错误就加这句,没有提示加不加无所谓
./form -qws
会出现“relocation error: /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtGui.so.4: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference”错误
我的解决办法是进入主机/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib目录下找到libstdc++.so.6链接的文件(通过右键属性——〉基本,可以看到链接的文件)libstdc++.so.6.0.8,重命名为libstdc++.so.6复制下载到开发板/tq2440/lib/目录下,之前别忘了将该文件夹下的libstdc++.so.6移到其它地方或重命名,如libstdc++.so.6.old。
*重命名其实是比较野蛮的方法,可以用ln命令的,参照下面这篇文章……
http://hi.baidu.com/a263238386/blog/item/362f01ce7b11a10a93457eae.html
然后再运行./form –qws,看问题是不是解决了!
现在可以看到开发板界面出现自己qt写的界面了

5. 不过触摸屏还没有校准,进入开发板根目录/tslib
cd bin
./ts_calibrate //触摸屏校准程序
运行该程序,屏幕出现5点校准画面,依次点击,将生成触摸屏校准数据文件/etc/pointercal
./ts_test //触摸屏拖曳测试程序
可以用这个来测试校准的怎么样

6. 开机自动启动qt 程序
如果想在开机后直接运行自己编的qt程序,而不想出现qt自带的那个界面只需把/etc/init.d/rcS中的
/bin/qtopia & 注释掉,前面加个#号就行:
#/bin/qtopia &
并在下面加上自己的启动程序
/tq2440/run.sh &
//添加一个执行脚本行,这个脚本因为在/etc/init.d/rcS中,所以会被自动运行(注意后面最好有个&,使他在后台执行,否则无法通过串口操作控制台)
修改echo "Starting Qtopia, please waiting..." > /dev/tty1
为echo "Starting myapps, please waiting..." > /dev/tty1
然后在/tq2440/目录下建立一个run.sh文件,内容如下:
#! /bin/sh
export QTDIR=/tq2440
export T_ROOT=/tslib
export PATH=$QTDIR/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0 //这边可能有的开发板是export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=tslib:/dev/event0 //同上,可能在/dev/input/event0
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
/test/form -qws
重启之后,就可以看见自己添加的qt程序开机自动运行,并且我们可以正常使用触屏。原理就是qt程序依赖很多的动态共享库,在运行的时候必须找到这个共享库,所以在运行qt程序之前必须显式地指明这些共享库的所在位置。
移植qt环境到tq2440开发板上选怎哪一个

qmake //生成makefile make //生成可执行文件hello 注意这些命令是在arm版的qt环境下的编译命令!执行qmake -v可查看其是否是arm版本,使用的是否是arm的库!执行file hello 可以查看hello是否是arm下运行的程序!2.移植好QT库的开发板 刚开始学,只需要移植最基本的几个库就行了!触摸屏的、...

如何自学嵌入式?

不需要去学习过多的数据结构知识,只需要掌握链表操作,其他不用学习,比如:队列、二叉树等等都不用学;不需要去学习任何的函数使用,比如文件操作、多线程编程、网络编程等等;这些知识,在编写Linux应用程序时会用,但是在操作系统特别是驱动学习时,用不着! 永往直前吧,以后碰到不懂的C语言问题,我们再回过头来学习。 在...

嵌入式新手入门最佳视频教程

Ioctl设备控制,内核等待队列,阻塞型字符设备驱 动, poll设备方法,自动创建设备文件, mmap设备方法,硬件访问, LED驱动程序,总线,设备,驱动, platform驱动,中断处理程序,按键驱动,网卡驱动程序设计, CS8900A网卡驱动程序分析,输入子系统,触摸屏驱动程序, PCI总线, PCI驱动程序设计,串口驱动程序,...

有什么嵌入式视频教程适合自学的

当硬件、软件应用出现问题,他们解决不了时,从底层软件角度给他们出主意,给他们提供工具。再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等,这只能由负责整个方案的人来考虑,他必须懂底层。 在操作系统领域,对知识的要求很多: ①懂硬件知识才能看懂电路图 ②英文好会看芯片手册 ③有编写、移植驱动程序的能力 ...

qt应用程序 qt设置中文应用程序名 qt开发桌面应用程序 qt静态编译应用程序 qt设置应用程序图标 qt开发android程序怎么样 qt怎么打包程序 qt怎么设置程序图标 QT应用程序开发
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
家里的网速突然一下很慢了怎么办? 黄家门前村基础设施 AI怎么保存pic格式ai怎么保存png格式 学习美甲需要多少费用 realtek音频管理器如何安装 realtek高清晰音频管理器怎么安装驱动? 直抒己见什么意思?出处是哪里? 考教师资格证,文学院的"语文课程与教学论"与语文学科对口吗? 兴奋在神经肌肉接头处的传递过程 电视剧琅琊榜第一集那个景色是哪里 谁有河洛最新《三界独尊》校对版,最少2000章。 古代铸剑师,为何会选择用活人炼剑? GPS时钟系统的输出及各种应用 csonline 僵尸的那两句话 我们是他们的奴隶和来了,他们来了 为什么说这两句话?! 请详细说说GPS在.电力,邮电,通讯等网络的时间同步的工作原理啊,请详说。谢谢 求奴隶斗士F 每个角色公开处刑阶段的特殊指令 不懂勿入 GPS授时系统的简介 请问有没有好玩的手机单机剧情游戏 关于motorola BTS调测和维护论文 奴隶之剑2礼包码在哪输入 Linux驱动程序开发实例的目录 奴役之剑2怎么出森林去沙漠? 奴隶之剑礼包码在哪输 奴隶之剑为什么过不了夜? 自由都市 奴隶之剑 求助,奴隶之剑2下水道转圈怎么破 奴隶之剑2纸片人礼包有什么用 奴役之剑2森林怎么过,我找不到风之精灵王~ 奴隶之剑1怎么换技能 奴隶之剑2怎么去皇宫 电影《无极》中,勤王那段,光明为什么跟昆仑说手里不拿武器的是王呢?他都看见王拿武器刺王妃了啊 定碳杯的方杯和圆杯的区别是什么? Intel cpu i3,i5,i7,i9是什么意思? 同级i5怎么比较?怎么反映10,11代? 微信朋友圈看不到了? 微信朋友圈打开什么都看不到,怎么回事?谢谢 为什么微信看不到自己发的朋友圈? 微信发现里面怎么没有朋友圈? 朋友没屏蔽我却看不到朋友圈是怎么回事? 为什么看不到朋友的朋友圈,也没写着只能看到这三天的 手机为什么看不见朋友圈呢? 我打开微信想看下朋友圈但是我点击发现选项进入后怎么突然看不到朋友圈选项了呢?如下图所示 为什么好友发表的朋友圈在我的朋友圈里不显示只有在他主页才可以看到?他发表的 干蛤蜊肉怎么做好吃? 蛤蜊干的做法炒着吃 海蛤干的做法大全 蛤蜊干的做法大全,蛤蜊干怎么做好吃 花蛤干怎么做好吃 蛤蜊肉干的做法大全有哪些 干蛤蜊肉的做法 干蛤蜊肉怎么做?