API常用版本:
QtopiaCore --X86 、Qt-X11、 Qt-windows
linux文字介面下用QtopiaCore—X86
linux圖形介面下Qt-X11
windows下用Qt-windows
後兩者直接安裝就能用了,沒什麼可說的
現在試試QtopiaCore--X86(可預設)在linux 字元介面下運行Qt程式
編譯
# ./configure -embedded x86 -qvfb -no-openssl
# make
# make install
之後先設定好環境變數:預設安裝路徑 /usr/local/Trolltech/QtopiaCore-4.3.5
# vi .bash_profile
在原有的PATH 之前加上新增進的Qtopiacore的環境變數,這樣系統在原有的QtX11之前先找到Qtopiacore的環境變數
,所以就運行了Qtopiacore的命令,而不會運行下面的QtX11命令
注意事項:退出vi 時若以 “:X”方式退出,將會導致source .bash_profile 出錯
QtopiaCore運行命令:
# qmake -project
# qmake
# make
# ./gameboard -qws
其中 qws 代表程式以伺服器的形式運行;
但是現在機器不是伺服器,怎麼辦呢?
解決:
先運行一個終端模擬器,鍵入命令
# qvfb
即可,qvfb 可執行程式 可在 QtX11/opensource 下找到,可把qvfb 拷到 /usr/bin 下,這樣就可執行 qvfb 命令了
或是把現在系統啟動並執行圖形介面改成字元介面,操作如下:
# vi /etc/inittab
把第18行 的 “id:5:initdefault:”預設值由“5” 改成 “3”,即把預設的系統圖形介面改成字元介面
# vi /boot/grub/grub.conf
把15行改成 kernel /vmlinz-2.4.20-8 ro root=LABEL=/ vga=0x314 ,即設定螢幕解析度
重啟系統,即可進到字元介面
運行命令
# ./gameboard -qws
即可。
Qt移植到arm 板上:
用 QtopiaCore-4.3.5-arm ,它一般可用以下兩種方法實現
編譯
# ./configure -embedded arm
# make
# make install
方法1:
首先設定好環境變數,預設安裝路徑 /usr/local/Trolltech/QtopiaCore-4.3.5-arm:
# vi .bash_profile
1.在原有的PATH 之前加上新增進的Qtopiacore-arm/bin的環境變數
2.進到要移植到 arm 板上的原始碼的檔案夾,鍵入命令
# qmake -project
# qmake
# make
# file gameboard //查看檔案是否是用QtopiaCore-4.3.5-arm 編出來的
3.把編譯好的可執行檔傳到arm 板上,運行,這時 arm 上提示缺少什麼庫檔案,就加進相應的庫檔案,直到成功。
這時要注意:
a . 有些庫檔案可能是連結檔案,我們這時只需要把連結指向的最終檔案傳到arm上,在 arm 終端下鍵入命令
# ln -s <連結檔案指向的最終檔案名稱> <連結檔案名稱>
即可建立一個軟連結。
b . 一定要新增環境變數,執行命令
# export LD_LIBRARY_PATH=/mnt/yaffs
c .arm 板上除了yaffs目錄,其它目錄是不可寫的,但確實要往/usr/lib 或其它一些目錄添進東西,這時可通過命令掛 虛擬內容
# mount -t ramfs ramfs /usr/lib
方法2:
此方法是常用的移植方法
1. 取得一個 準備往 arm 板上燒寫的 根檔案系統 root.cramfs
2. 下載一個cramfs.tar.gz 的mkcramfs 和 cramfsck 命令的壓縮包,解壓,make,把其中的mkcramfs 和 cramfsck可執行程式
拷到/usr/bin 下
3. 查看鏡像檔案,鍵入命令
# cramfsck -x <目標檔案> <源鏡像檔案> 如 # cramfsck -x rootfs rootfs.cramfs
4. # cd rootfs 進到目標檔案
5. 開啟另一終端,在原有的PATH 之前加上新增進的Qtopiacore-arm的環境變數,進到要移植的原始碼的檔案夾,鍵入命令
# qmake -project
# qmake
# make
即用Qtopiacore-arm產生一個(我的是叫)gameboard 的可執行程式
6. 鍵入命令查看產生的gameboard 的可執行程式是否是用來運行在 arm 板上的
# file gameboard
7. 把產生的gameboard拷到 rootfs 的目標檔案下的 home 目錄下
8. 運行命令,查看在 arm 板運行gameboard 可執行程式 需要什麼庫支援
# arm-linux-readelf -a gameboard | grep Shared
9. 把步驟8查到的所需的庫檔案加到rootfs 的目標檔案下的 lib 目錄下
10. 運行命令,把 rootfs 的目標檔案做成rootfs.cramfs的根檔案系統的鏡像檔案
# mkcramfs rootfs rootfs.cramfs
11. 把rootfs.cramfs的根檔案系統的鏡像檔案重新燒寫到 arm 板上
12. 運行
# ./gameboard -qws
其中qws 表示以圖形視窗伺服器的形式運行
注意:預設的幀緩衝(framebuffer)是/dev/fb0,若沒有的話,自己到/dev下用命令建立一個軟串連,如下
# cd /dev
# ln -s fb/0 fb0
附:具體燒寫根檔案系統的方法可參考《交叉編譯環境的建立》
http://blog.csdn.net/xiaozhi_su/archive/2009/03/21/4011311.aspx