Qtopia 2.2.0在OK6410平臺的移植(二)編譯qtopia2.2.0

1.安裝g++

這是PC上的編譯器,通過命令

root@ubuntu:~# g++ -v

可以查看到編譯器的信息,如果沒有則需要安裝gcc

2.安裝X11相關庫文件和開發包

sudo apt-get install libX11-dev libXext-dev libXtst-dev

3.安裝編譯jpeg-6b,libpng,e2fsprogs,zlib等相關庫

   參考《OK6410 QT移植百科全書》的方法

4.編譯Qtopia2.2.0

  這裏用的是友善提供的源代碼及補丁,乾脆偷個懶,把友善QT移植教程相關部分也copy過來把。

  //以下內容是copy

 交叉編譯 qtopia 2.2.0
爲了避免與x86版本的qtopia 2.2.0 產出衝突,我們創建一個新目錄mini6410來存放arm版本的qtopia, 如下所示:
# mkdir /opt/mini6410
然後執行以下命令將 qtopia2.2.0 的源代碼上述目錄上解壓並打上patch:
# cd /opt/mini6410
# tar xvzf /opt/qtopia-free-src-2.2.0.tar.gz
# cd /opt/mini6410/qtopia-free-2.2.0
# patch -p1 < /opt/qtopia2.2.0.friendlyarm.patch
接着執行編譯前的配置:
# echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g++-exceptions -no-qvfb -xplatform linux-arm-g++ -tslib' -qpe '-edition pda -displaysize 480x272 -xplatform linux-arm-g++ -luuid' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'
在上面configure參數中,我們指定使用了 tslib 來驅動觸摸屏,在友善之臂的linux交叉編譯器中,已經包含了 tslib 的庫文件和頭文件,因此這裏不需要指定 tslib 的庫文件和頭文件路徑。
其它的配置參數的含義通過命令 ./configure --help 來了解其含義。
最後執行以下命令進行編譯及安裝:
# make
# make install
編譯成功後,編譯生成的image存放在/opt/mini6410/qtopia-free-2.2.0/qtopia/image目錄下。

//以上是copy

5. 在開發板上運行 qtopia2.2.0

把上面編譯好的Qtopia整個目錄複製到開發板根目錄下/opt/目錄下

編寫啓動Qtopia的腳本,存放於開發板根目錄下/bin目錄中,名字爲Qtopia,內容如下:

#!/bin/sh
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_TSEVENTTYPE=H3600
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

export QWS_MOUSE_PROTO=Tslib:/dev/event0
#export QWS_MOUSE_PROTO=TPanel:/dev/input/event1
#export QWS_MOUSE_PROTO="Tslib:/dev/input/event1 MouseMan:/dev/input/mice"
#export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice
export QWS_KEYBOARD="TTY:/dev/tty1"
export KDEDIR=/opt/konqueror

if [ -c /dev/event0 ]; then

        echo "touch..."
        export QWS_MOUSE_PROTO='TPanel:/dev/event0'
     
        if [ ! -e /etc/pointercal ]; then
             /bin/calibrate
        fi
       
        if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then
                rm /mnt/disk/pointercal
                /bin/calibrate
        fi
else
        echo "mouse..."
        export QWS_MOUSE_PROTO="MouseMan:/dev/mice"
        >/etc/pointercal
fi

export QTDIR=/opt/Qtopia
export QPEDIR=/opt/Qtopia
export PATH=$QTDIR/bin:$PATH
export QT_PLUGIN_PATH=$QTDIR/plugins:$QTDIR/qt_plugins/
export QT_QWS_FONTDIR=$QPEDIR/lib/fonts/
export LD_LIBRARY_PATH=$QTDIR/plugins/qtopialmigrate/:$QTDIR/qt_plugins/imageformats/:$QTDIR/lib:/usr/local/tslib/lib:$LD_LIBRARY_PATH

FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)


#export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
case "$FB_SIZE" in
800,480)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
;;
480,272)
export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
;;
*)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
;;
esac


export HOME=/root/QtopiaHome

if [ ! -e $HOME ]; then mkdir -p $HOME; fi
if [ ! -e /usr/share ]; then mkdir /usr/share; fi
if [ ! -e $HOME/Settings/Trolltech/qpe.conf ]; then
    mkdir -p $HOME/Settings/Trolltech/
    cp $QPEDIR/etc/default/qpe.conf $HOME/Settings/Trolltech/qpe.conf -f
fi

export LANG="en_US"


#temp
if [ ! -e $HOME/Documents ]; then 
   mkdir -p $HOME/Documents; 
fi


exec $QPEDIR/bin/qpe 
啓動開發板後發現系統一直停留在Qtopia的歡迎界面上,沒有進入正常界面

這是由於系統缺少字庫,把廠家的程序中opt/Qtopia/lib/fonts目錄下兩個字庫文件helvetica_120_50.qpf,helvetica_120_50_t5.qpf放到相關位置就可以了。

重啓開發板,根據提示設置時間後進入我們熟悉的正常界面。



閱讀(8) | 評論(0) | 轉發(0) |
給主人留下些什麼吧!~~
評論熱議
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章