前言
本文內容主要爲如何在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