1. 程式人生 > >如何在ARM開發板的嵌入式linux系統上執行的QT程式

如何在ARM開發板的嵌入式linux系統上執行的QT程式

最近在做有關嵌入式的東西,很多不懂。
1、想在板子上執行用QT編好的程式,必須要在PC的linux系統裡用QT編嗎?
2、在windows系統裡編好的QT程式,經過交叉編譯後能直接執行在板子上嗎?還是板子需要弄個QT環境啥的?就是往裡面安個相同版本的QT?
謝謝。。。。。
 
1、想在板子上執行用QT編好的程式,必須要在PC的linux系統裡用QT編嗎?

不需要.但是必須經過交叉編譯. (window 無法進行交叉編譯.)

2、在windows系統裡編好的QT程式,經過交叉編譯後能直接執行在板子上嗎?還是板子需要弄個QT環境啥的?就是往裡面安個相同版本的QT?

必須要保證板子裡已經移植成功QTE.編譯過的程式才可以跑在板子上.

(關於如何移植QTE是個大問題.如果你是新手.one month,good luck to you) 交叉編譯的時候用的是QTE的庫而不是普通的QT庫.而且這個庫的版本和編譯工具鏈必須和板子上的一致.
追問
意思是說 我可以在windows7的 QT Creator或者 Designer裡編好程式 然後在虛擬機器的linux系統裡交叉編譯?弄交叉編譯的linux系統裡要裝個QTE的庫是嗎?然後板子裡也要裝個linux裡一樣的QTE庫是嗎? 那windows裡的 QT跟linux或者板子裡的庫能對應上嗎????都是些白痴問題。。。。。
回答
只要QtE的版本和你windows裡的Qt不要相差太遠就ok了.
在Linux裡面交叉編譯的時候. 最好在linux虛擬機器裡面也裝個Qt Creator 然後把QtE庫和交叉編譯工具鏈新增入Qt Creator中.然後就可以進行交叉編譯了.

所謂QtE庫的移植.不是在開發板上裝個QtE庫, 其實是在pc 機上將QtE原始碼編譯完成然後將庫檔案放到開發板上的.再製定一些環境變數就ok了.一定要記得用來編譯QtE庫原始碼的編譯工具鏈一定要和你編譯開發板上的linux系統的編譯工具鏈一致.這個差一點點都不行.

就是說如果開發板裡面的系統不是你搞的,而且你不知道用來編譯開發板裡面的系統的編譯工具鏈的版本的話,你就有大麻煩了....
追問
啊??、把Qte庫跟交叉編譯鏈加入Qt Creator幹嘛???交叉編譯不就是直接arm-linux-gcc一下嗎。。。。
回答
加入Qt Creator 是為了讓交叉編譯變得更簡單.不然你要自己寫makefile 用make porject命令....
追問
問最後一個問題哈 那我直接不用在windows 裡面編QT了,在linux裡面編好,然後交叉編譯放到板子的linux也可以是嗎???我的交叉編譯版本是3.4.1的,linux裡裝什麼版本的Qt 和開發板需要移植什麼版本的Qte比較好呢???? 謝謝。。。。
回答
可以直接在linux裡面編寫程式碼的.等你配置完Qt Creator 後就會有兩種開發環境.一種是Qt + gcc/g++
一種是QtE + arm-linux-gcc/g++. 編寫程式碼的時候用第一種,交叉編譯的時候用第二種.
(這個開發環境的搭建也挺難的...)

QtE的庫也要和交叉編譯工具鏈配合,記得不要使用版本太高的QtE的庫,我挑戰過最新的QtE庫結果悲劇了.你可以試試的.也許運氣好一下就過去了.(我是暈過去了的不知道你怎樣....)網上有試驗成功的例子就照只他們來選QtE的庫.
1、首先你要了解什麼叫交叉編譯:交叉編譯簡單的說就是在一個平臺上生成另一個平臺上的可執行程式碼。在linux上編譯Qt程式需要安裝工具鏈,這個工具鏈很好安裝,直接解壓就可以,具體方法網上有很多。
2、WIN平臺編譯出來的東西不可以直接在板子上執行。因為ARM平臺不同於X86的平臺。QT的環境就是說,你執行QT程式時,要到指定的系統裡面去找相應的東西,比如庫之類的。。所以這要是需要指定的。QT版本相容性還可以,不一定要相同版本的QT。。

*******樓上說的太過絕對 :window不是無法進行進行編譯,window上面是要相應的外掛才可以。MDK就是個反例。
追問
交叉編譯環境弄好了 就是不太懂後面的 QT程式可以在我的windows系統裡編好 然後拿到PC的linux系統裡交叉編譯 再傳到開發板的嵌入式linux系統裡對吧? 這三個地方的QT都是什麼版本的呢????我只知道什麼QTE QTopia QT Creator之類的。。。。完全不懂啊。。。求指教
追答:
關於qt,qte,qtopia,qt creator它們之間的區別和聯絡,相信對所有剛剛入門qt的同學來說都是很模糊的。我在剛開始接觸qt的時候也是這樣,而且我第一次接觸的是qte,因為要在arm上開發一個應用,當時搭建平臺可謂是。。。。。桑心。。。。
下面就分別介紹:

QT:
Qt是奇趣科技在1991年的時候開發的一個跨平臺的C++圖形使用者介面應用程式框架。事實上它就跟windows下的mfc一樣(接觸過mfc的童鞋應該比較多吧!)。不過最大的區別是qt可以在windows下使用,也可以在linux下使用,而mfc卻只能在windows下使用(廢話,誰讓mfc是微軟的呢)。QT提供給應用程式開發者建立圖形使用者介面所需的所有功能。而且Qt很容易擴充套件,並且允許真正地元件程式設計。我就用qt開發過opencv的應用程式,“趕腳”還不錯!!!

QT/E:
QT/E是QT的一個版本,而且相比之下,qt/e的效能更高!qt/e主要用於嵌入式的開發,是一個非常大的圖形介面的類庫。

Qtopia:
qtopia其實是構建於Qt/E之上一個類似桌面系統的應用環境(gnome桌面環境也是基於qt的),或者說Qt/E和Qtopia是不同的兩套程式,Qt/E是基礎類庫,Qtopia是構建於Qt/E之上的一系列應用程式。Qtopia 是Trolltech 公司(現已被Digia收購)為採用嵌入式Linux作業系統的消費電子裝置而開發的綜合應用平臺, Qtopia包含完整的應用層、靈活的使用者介面、視窗作業系統、應用程式啟動程式以及開發框架。

Qt creator:
Qt Creator是跨平臺的 Qt IDE,它其實跟Eclipse相似,都是一個整合開發環境, 也就是說qt creator是我們用來開發qt相關的一個平臺。以下來自小百:“Qt Creator 是 Qt 被 Nokia 收購後推出的一款新的輕量級整合開發環境(IDE)。此 IDE 能夠跨平臺執行,支援的系統包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。根據官方描述,Qt Creator 的設計目標是使開發人員能夠利用 Qt 這個應用程式框架更加快速及輕易的完成開發任務。”