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放到相關位置就可以了。
重啓開發板,根據提示設置時間後進入我們熟悉的正常界面。