第1步:安裝許可證文件(商業版只)
如果你有商業版的Qt嵌入式Linux ,第一步是要安裝您的授權文件作爲的$ HOME / .qt許可。
開源版本則不需要許可證文件。
第2步:打開存檔
首先解壓縮檔案中的首選位置,然後打開它;
cd <anywhere>
gunzip qt-embedded-linux-commercial-src-4.4.3.tar.gz
tar xf qt-embedded-linux-commercial-src-4.4.3.tar
tar –zxvf armtools.tar.bz2 //這個是交叉編譯工具鏈
該文檔假定檔案解在以下目錄:
~/qt-embedded-linux-commercial-src-4.4.3
配置交叉編譯工具:
Export PATH=/armtools路徑/bin:$PATH
第3步:交叉編譯編譯庫
在建設的Qt嵌入式Linux庫,運行。 / configure腳本來配置庫的發展結構。您可以列出所有的配置
系統的選擇輸入。 / configure的幫助。
請注意,默認情況下, Qt的嵌入式Linux配置安裝在/ usr/local/Trolltech/QtEmbedded-4.4.3目錄,
但可以改變使用前綴選項。另外,前綴安裝選項可以用來指定一個“地方”安裝的源目錄。
配置系統的另一個目的是讓您指定您的平臺架構:
cd ~/qt-embedded-linux-commercial-src-4.4.3
./configure -embedded [architecture]
一般情況下,所有的Linux系統有framebuffer支持可以使用的通用架構。其他典型的架構是的x86 , ARM和MIPS 。
下面是我配置時用的選項:
./configure -embedded arm -xplatform qws/linux-arm-g++ -qt-libpng -qt-gfx-linuxfb -qt-gfx-qvfb -qt-gfx-vnc -qt-gfx-transformed -qt-gfx-multiscreen -qt-kbd-usb –libdir /lib
注意:如果您想建立的Qt嵌入式Linux使用一個虛擬的framebuffer,通過- qvfb選項給configure腳本,另外 上面的命令選項 –libdir 選項是指編譯後程序搜索庫的路徑,更多的選項可以參考 ./configure –h 查看配置選項。
要創建庫和編譯所有的demos, examples, tools,和tutorials,請鍵入:
Gmake
在編譯完成之後可以不必安裝(make install),我們僅僅是需要其交叉編譯生成的庫文件和其bin目錄下生成的編譯工具。
第4步:搭建NFS環境
將文件系統解壓到/fs,
配置NFS文件 /etc/exports
內容:/fs *(rw,sync,no_root_squash,anonuid=0,anongid=0)
這裏一定要設置後面的選項,否則開發板上通過NFS啓動時候,會以匿名用戶登陸,而QT程序運行需要root權限。
將第三步生成t-embedded-linux-commercial-src-4.4.3/lib目錄的庫文件拷貝到NFS中的/fs/lib目錄下,這裏可能還需要一些交叉編譯工具裏面的庫,可以在需要的時候拷貝過來。
第五步:測試
1、先測試framebuffer:
先保證內核已經加入framebuffer選項並編譯今內核。測試程序在
qt-embedded-linux-commercial-src-4.4.3/example/qws/framebuffer/目錄下。
如何出現紅綠藍三個矩形。則說明framebuffer可用正常使用。
2、在QTE的demos 目錄下有演示程序,編譯後拷貝到NFS目錄中,這裏要保證環境變量的設置,保證所需要的qmake make 等命令是指向qt-embedded-linux-commercial-src-4.4.3/bin目錄下的命令,
3、在開發板上執行程序
./程序名 –qws
這個-qws是必須要選的,這是保證QT程序是以server方式運行的,還可以有其他的選項,例如:-fn 字體選項, -bg 背景色選項 –display 顯示選項。
詳細的可以參考其源碼包中的qt-embedded.html 這個文件。
說明:在開始時,NFS沒有配置爲以root權限登陸,在創建/tmp下的創建的文件將是以匿名用戶創建,而QT程序是需要root 用戶組權限執行的,在將庫裁剪後文件系統燒寫到開發板上則不存在這個問題;
ps:在拷貝庫文件時要用 -avfd參數 以保證拷貝過來的庫文件屬性不變,如要將文件系統燒寫到目標板上,則需要先裁剪庫,
這是我的NFS的配置文件內容:
/fs *(rw,sync,no_root_squash,anonuid=0,anongid=0)