1. 程式人生 > >在ARM開發板的嵌入式linux系統上執行的QT程式,必須得要在linux裡用QT編嗎

在ARM開發板的嵌入式linux系統上執行的QT程式,必須得要在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之類的。。。。完全不懂啊。。。求指教