如何交叉編譯 移植 QT

                   
QT簡介就很少說了,是諾基亞的東東,需求:將QT移植到ARM開發環境

首先的準備工做:linux

Linux環境: Linux  2.6.32-24-generic  Ubuntu10.04

交叉編譯工具:arm-linux-  g++-4.4.3架構

Qt安裝包:   qt-everywhere-opensource-src-4.6.2.tar.gz

tslib庫:   tslib-1.4.tar.gzapp

而後就開始各類編譯了:
svg

1、編譯tslib庫
1>編譯
tar  zxvf  tslib1.4.tar.gz
cd  tslib
./autogen.sh
./configure  --prefix=/usr/local/tslib/  --host=arm-linux  ac_cv_func_malloc_0_nonnull=yes  
make  
make  install
2>拷貝PC上/usr/local/tslib/*   的文件到開發板目錄下的/usr/local
cp  /usr/local/tslib/*   /home/profiles/2440/rootfs/usr/local  -rfd

注意:/home/profiles/2440/rootfs/是nfs文件系統的根目錄,注意跟本身的環境差別,隨機應變便可 

2、編譯嵌入式qt
1>編譯

tar zxvf  qt-everywhere-opensource-src-4.6.2.tar.gz工具

cd  qt-everywhere-opensource-src-4.6.2

./configure  \
-prefix  /usr/local/qt-4.6.2-arm  \  (安裝路徑)
-opensource  \  (自由版本)
-confirm-license  \  (遵照協議yes)
-release  \  (編譯和鏈接QT時關閉調試)
-shared  \  (使用QT動態庫)
-embedded  arm  \  (嵌入式arm架構)
-xplatform  qws/linux-arm-g++  \  (交叉編譯時的目標平臺)
-no-qt3support  \  (關閉QT3支持功能)
-fast  \  (只對庫及子目錄make來快速配置QT)
-no-largefile  \  (使大文件支持無效)
-qt-mouse-tslib  \  (使用tslib來驅動鼠標箭頭運行,即支持觸摸屏)
-I  /usr/local/tslib/include  \  (添加一個顯式的include路徑)
-L  /uar/local/tslib/lib  \  (添加一個顯式的lib路徑)
-make  tools  \  (構建tools)
-nomake  demos  \  (不構建demos)
-nomake  examples  \(不構建examples)
-nomake  docs  \  (不構建docs)
-qt-libjpeg  \  (使用jpeg庫)
-qt-libpng  \  (使用png庫)
-qt-libtiff  \  (使用tiff庫)
-multimedia  \  (構建QT多媒體模塊)
-no-qvfb  \  (不構建QVFB模塊)
-no-svg  \  (不構建SVG模塊)
-no-cups  \  (不編譯CUPS支持)

2>拷貝
cp  /usr/local/qt-4.6.2-arm  /home/profiles/2440/rootfs/usr/local/qt-4.6.2-arm  -rfd
3>更改成大字體,而且支持中文,wenquanyi_120_50.qpf須要下載
(開發板上操做)
rm  /usr/local/qt-4.6.2-arm/lib/fonts/*   -f
cp  wenquanyi_120_50.qpf  /usr/local/qt-4.6.2-arm/lib/fonts/

3>修改PC上環境變量以便編譯
export  ARMQTDIR=/usr/local/qt-4.6.2-arm  \
export  PATH=$ARMQTDIR/bin:$PATH  \
export  MANPATH=$ARMQTDIR/man:$MANPATH  \
export  LD_LIBRARY_PATH=$ARMQTDIR/lib:$LD_LIBRARY_PATH  \

qmake  -v能夠查看版本

QMake  version  2.01a
Using  Qt  version  4.6.2  in  /usr/local/qt-4.6.2-arm/lib

4>寫一個測試程序並交叉編譯
#include  <QApplication>
#include  <QLabel>

int  main(int  argc,  char  *argv[]) 
{
        QApplication  app(argc,  argv);
        QLabel  *label   =  new  QLabel("Hello Qt!");
        label->show();
        return  app.exec();
}
保存爲hello.cpp
執行:
qmake  -project
qmake  hello.pro
(若是有錯誤提示QMAKESPEC  has  not  been  set,  so  configuration  cannot  be  deduced.
則export  QMAKESPEC=/usr/local/qt-4.6.2-arm/mkspecs/qws/linux-arm-g++設置環境變量後,
再qmake  hello.pro,不然執行下一步)
make

cp  hello  /home/profiles/2440/rootfs/sbin
拷貝程序到開發板

5>修改開發板ts配置文件
vi  /usr/local/etc/ts.conf
去掉module_raw  input前面的註釋和空格並保存
運行一下ts校訂程序
/usr/local/bin/ts_calibrate
6>設置環境變量,開發板上執行
export  QTDIR=/usr/local/qt-4.6.2-arm
export  T_ROOT=/usr/local
export  PATH=$QTDIR/bin:$PATH
export  TSLIB_CONSOLEDEVICE=none
export  TSLIB_FBDEVICE=/dev/fb0
export  TSLIB_TSDEVICE=/dev/input/event0
export  TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export  TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export  TSLIB_CALIBFILE=/etc/pointercal
export  QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export  LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib

(注意/dev/fb0是framebuffer設備結點,/dev/input/event0是觸摸屏設備結點名稱,
注意本身的開發板是否一致,包括交叉編譯並安裝qt的目錄/usr/local/qt-4.6.2-arm,
觸摸屏校驗文件的位置/etc/pointercal,配置文件的位置$T_ROOT/etc/ts.conf)


7>運行hello程序
hello  -qws
8>若須要開機即啓動本身的qt程序,則須要修改啓動腳本
vi  etc/init.d/rcS

(若腳本里有啓動qtopia,如:
/bin/qtopia  &
echo  "                                  "  >  /dev/tty1
echo  "Starting Qtopia, please waiting..."  >  /dev/tty1
則註釋這三句,在前面加上# 
#/bin/qtopia   &
#echo   "                                  "  >  /dev/tty1
#echo   "Starting Qtopia, please waiting..."  >  /dev/tty1
)
在文件最後加上
/bin/mypda  &
echo  "                                  "  >  /dev/tty1
echo  "Starting my PDA..."  >  /dev/tty1
sleep  1
這樣就會自動啓動/bin目錄下的mypda這個腳本。
創建這個腳本
vi  /bin/mypda
輸入
#!/bin/sh 
export  QTDIR=/usr/local/qt-4.6.2-arm
export  T_ROOT=/usr/local
export  PATH=$QTDIR/bin:$PATH
export  TSLIB_CONSOLEDEVICE=none
export  TSLIB_FBDEVICE=/dev/fb0
export  TSLIB_TSDEVICE=/dev/input/event0
export  TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export  TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export  TSLIB_CALIBFILE=/etc/pointercal
export  QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export  LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
exec  sbin/hello  -qws
保存,chmod  +x  /bin/mypda,加執行權限
大功告成,reboot體驗一下吧!
相關文章
相關標籤/搜索