一:软硬件
1. 主机: ubuntu 8.04
2. 平台:devkit8000(omap3530)
3. tslib-1.4
4. QT版本: qt-embedded-linux-opensource-src-4.4.3.tar.gz
5. 交叉编译工具:arm-none-linux-gnueabi-2007q3
二: 移植tslib
1.
tar xzvf tslib-1.4.tar.gz
export CC=arm-none-linux-gnueabi-gcc
export CXX=arm-none-linux-gnueabi-g++
2.
cd tslib/
./autogen.sh
执行这条命令可能会报错,需要安装以下工具:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
3.
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-none-linux-gnueabi.cache
./configure --host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no PLUGIN_DIR=/home/tslib/plugins -prefix=/home/tslib/build
--cache-file=arm-none-linux-gnueabi.cache 2>&1 | tee conf_log
4.
make 2>&1 | tee make_log
make install
5. 将/home/tslib/build/lib下除去pkgconfig目录外其他所有文件拷贝到开发板/lib目录下
6. 将/home/tslib/build/etc下的ts.conf拷贝到开发板的/etc下
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear 注意只留这几行,其他的必须全部删掉,包括注释。
7. 设置环境变量,在开发板文件系统的/etc/profile文件里添加以下命令:
export TSLIB_TSDEVICE=/dev/input/event2(我的板子是这个设备,其他板子可能会不同) export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
8. 运行/tslib/build/bin中的测试程序,以检测tslib是否移植成功
./ts_caliberate ./ts_test
假如液晶屏的设备节点不是/dev/input/event2,则会出现以下错误:
selected device is not a touchscreen I understand
这时你就需要在/dev/input/中寻找自己的节点了。
三、移植QT
1. tar zxvf qt-embedded-linux-opensource-src-4.4.3.tar.gz –C /home
cd qt-embedded-linux-opensource-src-4.4.3
2. 修改mkspecs/qws/linux-arm-g++/qmake.conf文件,替换所有arm-linux为arm-none-linux-gnueabi,并添加如下2行,即tslib生成的库文件。
QMAKE_INCDIR +=/home/tslib/build/include
QMAKE_LIBDIR +=/home/tslib/build/lib
3. 配置QT(主要是根据自己的开发选择库)
./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,16,32 -no-qt3support -prefix /home/qt/target -fast -qt-sql-sqlite -no-libtiff
-no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -optimized-qmake
-no-nis -no-separate-debug-info -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb
-qt-kbd-usb -no-kbd-qvfb -no-mouse-qvfb -no-mouse-linuxtp -qt-mouse-pc -qt-mouse-tslib -no-mmx -no-3dnow -no-sse -no-sse2
/////////////////////////////////////////////////////////////////////////////////
./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,16,32 -no-qt3support -fast -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib
-qt-libpng -qt-freetype -optimized-qmake -no-nis -no-separate-debug-info
-no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -qt-kbd-usb -no-kbd-qvfb
-no-mouse-qvfb -no-mouse-linuxtp -qt-mouse-pc -qt-mouse-tslib -no-mmx -no-3dnow -no-sse -no-sse2
/////////////////////////////////////////////////////////////////////////////////
./configure -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -qt-mouse-pc -no-gfx-qvfb -no-gfx-vnc -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-qvfb -no-gfx-vnc -qt-mouse-tslib -no-glib -prefix /home/qte4.8.0-arm -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples
-nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++
-little-endian -qt-freetype -depths 4,8,16,32 -I /home/tslib/build/include -L /home/tslib/build/lib -v
-D__ARM_ARCH_5TEJ__
./configure –help 可查看各配置选项的意思
4. 编译(需要等很久)
make && make install
5.下载测试
1) 拷贝/home/qt/target下整个lib目录到开发板下/opt/qtopia目录下
2) 删掉/opt/qtopia/lib/fonts目录下多余的字体文件,只留下cour.pfa和cursor.pfa 两个文件。
3) 设置环境变量,在开发板文件系统的/etc/profile文件里添加以下命令:
export QTOPIA=/opt/qtopia
export LD_LIBRARY_PATH=$QTOPIA/lib:$LD_LIBRARY_PATH
export PATH=$QTOPIA/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/event2
export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
export QT_QWS_FONTDIR=/opt/qtopia/lib/fonts
4) 拷贝/home/qt/target/examples/tutorials/下的任一测试程序到开发板下
/opt/qtopia/bin目录下并运行。
如遇到测试程序找不到libstdc++.so.6时,可将交叉编译器中的libstdc++.so.6.0.9改成libstdc++.so.6后,并拷贝到开发板的/lib下即可。
四、QT开发环境搭建
方法一:编译源码产生开发所需要的库文件和工具。(这种方法费时,而且由于系统库的问题,可能编译不过)
1、下载qt-x11-opensource-src-4.4.3.tar.bz2
2、tar jxvf qt-x11-opensource-src-4.4.3.tar.bz2 –C /home
3、
cd qt-x11-opensource-src-4.4.3
./configure
make && make install
4、
export QTDIR=/usr/local/Trolltech/Qt-4.4.3(如果你在./configure的时候,没有指定-prefix的话,这个便是默认路径)
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$ QTDIR:$ LD_LIBRARY_PATH
方法二:通过新立得获得
apt-get install libqt4-dev
建议使用此种方法,注意你的X11版本不应高于qt-embedded。我装的4.3.4版本。
五、验证QT开发环境
1、将任意源码,这里假设为main.cpp拷到/home/qt-4.3.4下
2、qmake –project –o main.pro 生成main.pro
3、qmake –makefile 生成Makefile
4、make 生成./main
5、./main 可在x86环境下看运行效果
6、交叉编译main.cpp
这里主要完成的工作就是将QTDIR指向qt-embedded的install目录。
export QTDIR=/home/qt/target
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
然后重复1-5。将执行程序下载到开发板即可。运行过程,参见下载测试。