版本:
qtopia PDA 2.2.0
系統(tǒng):
ubuntu 7.04
gcc版本:
gcc-3.3.5
arm-linux-gcc-3.4.1
注: gcc 版本不要高于4.0,否則編譯會出錯
資源:
1. qtopia:
ftp://ftp.trolltech.com/qtopia/source/qtopia-free-src-2.2.0.tar.gz
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/qtopia/source/qtopia-free-src-2.2.0.tar.gz
http://www.qtopia.org.cn/ftp/mirror/ftp.trolltech.com/qtopia/source/qtopia-free-src-2.2.0.tar.gz
NOTE: 三個一樣,下其中一個就OK
2. libsrc
e2fsprogs-1.38.tar.gz
http://download.chinaunix.net/download.php?id=4655&ResourceID=2490
jpegsrc.v6b.tar.gz
http://freshmeat.net/redir/libjpeg/5665/url_tgz/jpegsrc.v6b.tar.gz
zlib-1.2.3.tar.gz
http://www.zlib.net/zlib-1.2.3.tar.gz
libpng-1.2.14.tar.bz2
http://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.14.tar.bz2
參數(shù)文檔:
http://www.qtopia.org.cn/phpBB2/viewtopic.php?t=134
http://www.qtopia.org.cn/phpBB2/viewtopic.php?t=858
一、pc機(jī)上安裝
根據(jù):http://www.qtopia.org.cn/phpBB2/viewtopic.php?t=134來的
注:這里make 之前要安裝幾個lib庫的支持,否則會出現(xiàn)如: 找不到-lqte,-luuid的錯誤
/**************************** lib 庫安裝 **************/
1.e2sfsprogs-1.38
tar zxvf e2fsprogs-1.38.tar.gz
cd e2fsprogs-1.38
./configure --enable-elf-shlibs
make
cp lib/libuuid.so* ...../qtopia/lib
2.jpeg-6b
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --enable-shared
make
cp .lib/libjpeg.so* ......../qtopia/lib
3.zlib-1.2.3
tar zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --shared
make
cp libz.so* ........../qtopia/lib
4.libpng-1.2.14.tar.bz2
tar jxvf libpng-1.2.14.tar.bz2
cd libpng-1.2.14
cp scripts/makefile.linux ./Makefile
vim png.h
修改第382行 (382 gg)為:
#include "../zlib-1.2.3/zlib.h"
要求zlib-1.2.3和libpng-1.2.14在同一目錄
make
cp libpng12.so* ....../qtopia/lib
cp libpng12.so ......./qtopia/lib/libpng.so
/**************** qtopia 安裝 *************************/
命令:
編譯:
tar zxvf qtopia-free-src-2.2.0.tar.gz
cd qtopia-free-2.2.0
export PATH=$PWD/tmake/bin:$PATH
echo "yes"|./configure -qte no-keypad -qpe pda
make
make install
運(yùn)行:
cd qtopia-free-2.2.0/qtopia/image/opt/Qtopia
mkdir demohome
cd ../../../bin
./startdemo -home qtopia/image/opt/Qtopia/demohome -sound system
--------------------------------------------*/
二、交叉編譯
1、lib 庫交叉編譯
注:此處的觸摸屏我用的qtopia自己帶的支持,沒有使用tslib另外支持
將編譯后產(chǎn)生的lib和頭文件放在/home/arm/lib和/home/arm/include目錄下面了
mkdir /home/arm
cd /home/arm
mkdir include lib
到libsrc所在的目錄:
e2fs:
./configure --host=arm-linux --enable-elf-shlibs --with-cc=arm-linux-gcc --with-linker=arm-linux-ld
make
cp lib/libuuid.so* /home/arm/lib
jpeg:
./configure –enable-shared
vi Makefile
修改:
CC= arm-linux-gcc
AR= arm-linux-ar rc
AR2=arm-linux-ranlib
make
cp .lib/libjpeg.so* /home/arm/lib
cp *.h /home/arm/include
zlib:
cd /home/arm/zlib
./configure –shared
vi Makefile
修改:
[begin]
...
CC=arm-linux-gcc
...
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1
CPP=arm-linux-gcc -E
...
AR=arm-linux-ar rc
RANLIB=arm-linux-ranlib
...
prefix =/usr/local/arm/2.95.3/arm-linux
...
[end]
make
cp libz.so* /home/arm/lib/
cp *.h /home/arm/include/
libpng:
/home/arm/libpng
vim png.h
修改第382行為:#include "../zlib-1.2.3/zlib.h"
cp scripts/makefile.linux ./Makefile
vi Makefile
修改:
[begin]
...
AR_RC=arm-linux-ar rc
CC=arm-linux-gcc
...
RANLIB=arm-linux-ranlib
...
prefix=/usr/local/arm/2.95.3/arm-linux
...
[end]
make
cp libpng12.so* /home/arm/lib/
cp libpng12.so /home/arm/lib/libpng.so
cp *.h /home/arm/include/
此處要將png.h第382行改回原來的: #include "zlib.h"
2.準(zhǔn)備
進(jìn)qtopia-free-2.2.0目錄
vi qtopia/mkspecs/qws/linux-arm-g++/qmake.conf
將此行
QMAKE_LIBS_QT = -lqte
修改為
QMAKE_LIBS_QT = -lqte -lpng -lz -luuid -ljpeg
NOTE:
加了tslib庫的改為:
QMAKE_LIBS_QT = -lqte -lpng -lts -lz -luuid -ljpeg
使用qtopia自帶觸摸支持:
修改:
vim qtopia/src/qt/qconfig-qpe.h
在最后加上
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
兩行,使其自動對觸摸屏的支持
設(shè)置環(huán)境變量 :
我的是在qtopia-free-2.2.0目錄下面
export PATH=$PWD/tmake/bin:$PATH
export QTDIR=$PWD/qt2
export QPEDIR=$PWD
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=$QPEDIR/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
cd $QPEDIR/qtopia/src/libraries/qtopia
cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h
3、編譯安裝
進(jìn)qtopia-free-2.2.0目錄
./configure -qte "-embedded -xplatform linux-arm-g++ -qconfig qpe -no-qvfb -depths 16,24 -system-jpeg -system-libpng -system-zlib -gif -thread -no-xft -release -I/home/arm/include -L/home/arm/lib -lpng -lz -luuid -ljpeg" -qpe '-xplatform linux-arm-g++ -edition pda -displaysize 240x320 -I/home/arm/include -L/home/arm/lib -prefix=/home/qtopia-free-2.2.0/target'
make
make install
在target 目錄下會生成交叉編譯好的可運(yùn)行文件,將其cpoy到arm板上設(shè)置好環(huán)境變量即可運(yùn)行
4、在arm 板上運(yùn)行
我的是yc2440的板子,linux2.6.13
target 目錄放在根目錄下/target
環(huán)境變量設(shè)置:
export HOME=/root
export QTDIR=/target
export QPEDIR=/target
export QWS_KEYBOARD=/dev/tty
export QWS_MOUSE_PROTO="TPanel:/dev/h3600_tsraw"
export PATH=/target/bin:$PATH
qpe命令后即可進(jìn)入漂亮的QT界面啦
三、漢化
進(jìn)qtopia-free-2.2.0/qtopia目錄
設(shè)置環(huán)境變量:
export QPEDIR=/home/qtopia-free-2.2.0/qtopia
export QTDIR=/home/qtopia-free-2.2.0/qt2
export DQTDIR=/home/qtopia-free-2.2.0/dqt
PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$PATH
./configure --languages "zh_CN"
make lupdate
cd bin
./nct_lupdate
此步后在qtopia/i18n/目錄下會產(chǎn)生zh_CN 文件夾,并在zh_CN 文件夾下面會產(chǎn)生 主界面的 .ts文件
cd qtopia/i18n/zh_CN
新建 .driectory 文件
vim .directory
內(nèi)容如下:
[Translation]
File=QtopiaI18N
Context=Chinese
[Desktop Entry]
Name[]=Chinese
修改qtopia-free-2.2.0/qtopia/i18n/zh_CN/QtopiaDefault.ts 中的<name>FontMap</name> 這段代碼變成:
<name>FontMap</name>
<message encoding="UTF-8">
<source>Small,helvetica,10</source>
<translation>Petit,unifont,11</translation>
</message>
用linguist工具把所有的 .ts 文件翻譯成中文
然后在qtopia目錄下
make install
漢化完成,在target 目錄的i18n/zh_CN中會產(chǎn)生 .qm文件
NOTE:
進(jìn)入QT界面后,進(jìn)settings ,language選項將語言設(shè)置成中文
同時在apperance選項中選擇含有中文支持的字體,如其自帶的unifont 字體
設(shè)置好后就會看到中文界面啦
Qt-Embedded 4 install
1、安裝Qt-Embedded-linux
安裝Qt-Embedded-linux有兩種方法,一種是從源碼安裝,一種是直接安裝。如果不需要在PC機(jī)上進(jìn)行Qt-Embedded程序調(diào)試,可以不需要安裝Qt-x11和Qt-Embedded for x86
(1) 源碼安裝
首先從 ftp://ftp.trolltech.com/qt/source/ 下載以下源碼包:
qt-x11-opensource-src-4.5.0.tar
qt-embedded-linux-opensource-src-4.5.0.tar
安裝Qt-x11
# tar jxvf qt-x11-opensource-src-4.5.0.tar
# cd qt-x11-opensource-src-4.5.0
# echo "yes" | ./configure –qvfb –no-openssl –no-webkit
# make && make install
安裝Qt-Embedded for x86
# tar jxvf qt-embedded-linux-opensource-src-4.5.0.tar
# cd qt-embedded-linux-opensource-src-4.5.0
安裝中會提示錯誤,需要以下幾個軟件,
sudo apt-get install libjpeg-dev
# echo "yes" | ./configure \
-release \
-shared \
-no-qt3support \
-no-xmlpatterns \
-no-svg \
-no-webkit \
-system-zlib \
-qt-gif \
-system-libtiff \
-system-libpng \
-qt-libmng \
-system-libjpeg \
-make libs \
-make tools \
-nomake examples \
-nomake docs \
-nomake demo \
-no-nis \
-no-cups \
-no-iconv \
-no-dbus \
-no-openssl \
-xplatform qws/linux-x86-g++ \
-embedded x86 \
-qt-freetype \
-depths 16,18 \
-qt-gfx-qvfb \
-no-gfx-transformed \
-no-gfx-multiscreen \
-no-gfx-vnc \
-no-gfx-linuxfb \
-qt-kbd-tty \
-qt-kbd-usb \
-qt-kbd-qvfb \
-qt-mouse-pc \
-qt-mouse-qvfb \
-no-glib \
-silent
# make && make install
安裝Qt-Embedded for ARM
# tar jxvf qt-embedded-linux-opensource-src-4.5.0.tar
# cd qt-embedded-linux-opensource-src-4.5.0
# echo "yes" | ./configure \
-release \
-shared \
-no-qt3support \
-no-xmlpatterns \
-no-svg \
-no-webkit \
-system-zlib \
-qt-gif \
-system-libtiff \
-system-libpng \
-qt-libmng \
-system-libjpeg \
-make libs \
-make tools \
-nomake examples \
-nomake docs \
-nomake demo \
-no-nis \
-no-cups \
-no-iconv \
-no-dbus \
-no-openssl \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-little-endian \
-qt-freetype \
-depths 16,18 \
-qt-gfx-linuxfb \
-no-gfx-transformed \
-no-gfx-multiscreen \
-no-gfx-vnc \
-no-gfx-qvfb \
-qt-kbd-tty \
-qt-kbd-usb \
-qt-mouse-tslib \
-qt-mouse-pc \
-no-glib \
-silent
# make && make install
2.設(shè)置環(huán)境變量,例如:
僅當(dāng)前用戶有效(其他用戶無效):修改$HOME/.bash_profile,加入:
PATH=/usr/local/Trolltech/Qt-4.3.5/bin:$PATH
所有用戶有效(包括root和普通用戶):
修改/etc/profile,加入以下兩行(一般在最后一行添加):
export PATH=/usr/local/Trolltech/Qt-4.5.0/bin:$PATH
2、程序調(diào)試和幫助
在PC機(jī)上調(diào)試Qt-Embedded程序的方法為,使用Qt-Embedded for x86的Qt庫來編譯Qt-Embedded程序,然后使用Qt-x11的qvfb工具仿真調(diào)試。下面以demo程序?yàn)槔?br># tar jxvf demo.tar.bz2
# cd demo
# /usr/local/Trolltech/QtEmbedded-4.5.0/bin/qmake -project
# /usr/local/Trolltech/QtEmbedded-4.5.0/bin/qmake
# make
# /usr/local/Trolltech/Qt-4.5.0/bin/qvfb &
# ./demo -qws
運(yùn)行以下程序可以查看Qt編程,調(diào)試,應(yīng)用,布署等各方面的幫助。
# /usr/local/Trolltech/Qt-4.5.0/bin/assistant
3、將Qt-Embedded程序運(yùn)行在目標(biāo)板上
用Qt-Embedded for ARM編譯Qt-Embedded應(yīng)用程序,以demo為例:
# tar jxvf demo.tar.bz2
# cd demo
# /opt/Trolltech/QtEmbedded-4.5.0/bin/qmake -project
# /opt/Trolltech/QtEmbedded-4.5.0/bin/qmake
# make
將demo程序下載到目標(biāo)板上,然后就可以運(yùn)行demo程序。在運(yùn)行程序前以下環(huán)境變量必須已經(jīng)設(shè)置。
export QTDIR=/opt/QtEmbedded-4.5.0
export PATH=$QTDIR/bin:$PATH
export QWS_DISPLAY=LinuxFb:/dev/fb0
export QWS_SIZE=640x480
export QWS_SW_CURSOR=1
export QWS_MOUSE_PROTO=Tslib:/dev/ep93xx_ts
export QWS_KEYBOARD=TTY:/dev/ttyS0
export QT_ONSCREEN_PAINT=0
export PONTERCAL_FILE=/etc/pointercal
export LD_LIBRARY_PATH=$QTDIR/lib:/lib:/usr/lib:$LD_LIBRARY_PATH
export TSLIB_TSDEVICE=/dev/ep93xx_ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CONSOLEDEVICE=/dev/tty
export TSLIB_FBDEVICE=/dev/fb0