前言
本文内容主要为如何在Ubuntu14.04上将Qt程序移植到装有Qnx6.5.0操作系统的嵌入式设备(x86架构)上,以供有需要的开发者参考。
准备工作
1.在Ubuntu上安装Qt4.7.1;
2.在Ubuntu上安装QNX Momentics IDE,具体的安装步骤可以参考我以前写的博客:
http://blog.csdn.net/wangqingchuan92/article/details/78511824
3.下载这两个压缩包:qt_qnx_host_linux_x86.tar.gz,qt_qnx_targets.tar.gz(可以向你们的QNX经销商索要)
具体移植过程
1.编写一个Qt小程序,能够编译并运行在linux中:
2.打开linux终端,进入超级用户模式,输入指令:echo “${QNX_TARGET%/target/*}”,定位Momentics IDE的安装目录:
3.将qt_qnx_host_linux_x86.tar.gz解压到Momentics IDE的安装目录,例如我的:
4.进入Qt工程文件夹 ,新建一个文本文件,命名为“Makefile“,然后打开该文本文件,输入如下内容,保存退出:
LIST=OS CPU VARIANT
MAKEFILE=GNUmakefile
include recurse.mk
## eof
5.在该工程文件夹中,新建名为”nto-arm-le”(针对ARM),”nto-arm-le-v7”(针对ARM)以及 “nto-x86-o”(针对x86)子文件夹:
6.在每个文件夹中,新建一个文本文件,命名为”GNUmakefile”,然后打开该文本文件,输入如下内容,保存退出:
ifndef QCONFIG
QCONFIG=qconfig.mk
endif
include $(QCONFIG)
include $(MKFILES_ROOT)/qmake-qt.mk
## eof
7.接下来就是常规编译:打开终端进入Qt工程文件夹,依次输入make clean,make,make install指令,这样就开始编译了:
8.打开三个子文件夹中的任意一个,可以看到编译后的可执行文件:
9.以上都是在Ubuntu上进行操作,接下来的步骤就是主要在QNX操作系统上进行。首先将主机和目标机通过网线连接设置同一网段,然后在QNX操作系统上新建一个用户,具体设置可以参考我以前写的博客:
http://blog.csdn.net/wangqingchuan92/article/details/78456302
10.在Ubuntu中,将qt_qnx_targets.tar.gz通过ftp传送至QNX中(简单,就不贴图了),然后在QNX上,打开终端,进入压缩包所传至的文件夹,输入指令: # tar xvf qt_qnx_targets.tar.gz -C/usr/qnx650,将文件解压至/usr/qnx650。
11.继续在QNX中,将解压后将/usr/qnx650/target/qnx6/usr以及/usr/qnx650/target/qnx6/x86/usr中的二进制文件拷贝到QNX的/usr目录下,完成对目标机的配置:
# cp -r /usr/qnx650/target/qnx6/usr/* /usr
# cp -r /usr/qnx650/target/qnx6/x86/usr/* /usr
12.继续在QNX中,编辑/root/.profile配置文件,输入指令vi /etc/profile,然后在文件末尾输入:
export QWS_DISPLAY=qnx
export QWS_KEYBOARD=qnx
export QWS_MOUSE_PROTO=qnx
export XDG_CONFIG_HOME=/root
export QMAKESPEC=unsupported/qws/qnx-i386-g++
13.回到Ubuntu中,通过ftp将Qt工程拷贝到QNX系统上,然后换到QNX上,进入Qt工程所传至的文件夹,找到编译的可执行文件,打开终端,输入如下指令修改权限(简单,就不贴图了):chmod 777 ./test1。
14.点击下图的红框进行操作,进入QNX文本模式:
15.此时进入文本模式。首先回车一下,输入login为root,password为空,然后输入指令:
/usr/photon/bin/devi-hid –Pr mouse
16.进入到Qt工程文件夹所在目录,找到可执行文件,输入:./test1 -qws运行程序,成功:
17.输入Ctrl+c退出Qt程序。
PS:虽然步骤16能够运行Qt程序,但会发现运行Qt程序后,键盘不能够输入字符,不过可以通过写脚本的方式让Qt程序运行时能够使用键盘。在步骤15,输入完root和空密码后,进入Qt程序所在文件夹,用vi建立一个脚本命名为do.sh,脚本内容:
#/bin/sh
chmod +x ./test1
/usr/photon/bin/devi-hid –Pr kbd mouse
./test1 -qws
保存退出脚本后,给该脚本加可执行权限:
#chmod +x ./do.sh
最后执行该脚本,这样就可以在Qt程序中使用键盘了:
但是这把用Ctrl+c退出程序系统无反应,所以用鼠标点击右上角的关闭“X”退出到文本模式,但是进入到文本模式后用键盘输入无反应,这个问题先放着,等以后解决。
以上。
参考文档:
1.http://blog.csdn.net/quyunfei/article/details/8977864
2.Qt 4.7.1 for QNX systems
这个Qt 4.7.1 for QNX systems文档我上传到网上了,可以通过这个地址下载,:http://download.csdn.net/download/wangqingchuan92/10118987