平台: Ubuntu10.04
编译器:arm-linux-gcc-4.3.3(程序可以编译成功,但如果用4.3.3编译的库文件运行程序会出现段错误)
编译器:arm-linux-gcc-4.1.2(正常,)
Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。
1、tslib的安装:
$apt-get install autoconf automake libtool //安装automake工具
$autoconf -V //查看版本:autoconf (GNU Autoconf) 2.65版本低了会报错
$tar xvzf tslib-1.4.tar //解压文件;
$cd tslib/
//$./autoclean.sh
$ ./autogen.sh //生成配置文件;
$ ./configure --prefix=/usr/local/tslib --host=arm-linux --target=arm-linux --enable-inputapi=no ac_cv_func_malloc_0_nonnull=yes
//--prefix=/usr/local/tslib 指定安装路径,
//--host=arm-linux --target=arm-linux: 指定编译环境,
//-host=arm-linux ac_cv_func_malloc_0_nonnull=yes 配置参数?;
$make
$make install // ok
安装完成
在/usr/local/tslib/目录下会生成4个文件夹
$bin etc include lib
在root_qtopia/usr/目录下建立一个local文件夹
$cd /opt/GTStudio/GT2440/root_qtopia/usr/
$mkdir local
$cd local
$ls
复制上面生成的文件夹到该目录下
$cp /usr/local/tslib/* ./ -arf
修改tslib的配置文件
$ cd etc/
$ vi ts.conf
将第二行的注释去掉
#module_raw input
改为
module_raw input
但要注意行首不要留有空格,即module_raw input是顶格的,不然之后会出现段错误(segmentational fault)。
拷贝校正程序到/usr/bin/目录下
$cd tslib/bin
$cp ts_calibrate /usr/bin/
第一次运行会生成/etc/pointercal文件
2、QT编译
QT源码版本:qt-everywhere-opensource-src-4.7.3
编译器版本:arm-linux-gcc-4.3.3
配置1(ubuntu10.04下):
./configure -embedded arm -release -opensource -silent -qt-libpng -qt-libjpeg -qt-libmng -qt-libtiff -no-multimedia -make libs -nomake tools -nomake examples -nomake docs -nomake demos -rpath -qt-kbd-linuxinput -qt-mouse-tslib -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-qt3support -no-nis -no-cups -no-iconv -no-dbus -no-openssl -no-fast -no-accessibility -no-scripttools -no-mmx -no-multimedia -no-svg -no-webkit -no-3dnow -no-sse -no-sse2 -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -no-glib -prefix /usr/local/Trolltech/QtEmbedded-4.7.3-arm -I/usr/local/tslib/include -L/usr/local/tslib/lib
//4min //make confclean
#make
报错了:
../3rdparty/javascriptcore/JavaScriptCore/wtf/TCSystemAlloc.cpp: In function 'void* TrySbrk(size_t, size_t*, size_t)':
../3rdparty/javascriptcore/JavaScriptCore/wtf/TCSystemAlloc.cpp:126: error: 'sbrk' was not declared in this scope
make[1]: *** [obj/release/TCSystemAlloc.o] Error 1
make[1]: Leaving directory `/home/bakul/Qt/qt-everywhere-opensource-src-4.6.3/src/script'
make: *** [sub-script-make_default-ordered] Error 2
解决办法:
#gedit /usr/local/arm/4.3.3/arm-none-linux-gnueabi/libc/usr/include/unistd.h
修改第996行注释的内容
//extern void *sbrk (intptr_t __delta) __THROW;
为
extern void *sbrk (size_t __delta) __THROW;
$make //30min
$make install //2min
$make clean //清除.o文件,释放磁盘空间
4.5.3库文件必须用4.1.2编译(否则段错误),程序可以不用4.1.2编译;
添加应用程序:
$cp wiggly /usr/bin/
$arm-linux-readelf –d wiggly // 查看可执行文件wiggly文件的依赖库
$cd /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/
$cp -a libQtCore.* libQtNetwork.* libQtGui.* /home/rootfs/usr/lib/ //拷贝依赖库 -a表示拷贝多个文件
$
$rm -f *.la *.prl
3、环境变量配置脚本:
/********************qtconfig**************************
#!bin/sh
export QTLIB=/usr/lib
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:$QTLIB
export QWS_SIZE=480x272
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"
export PATH=/usr/lib:$PATH
if [ -f "$TSLIB_CALIBFILE" ]; then
#wiggly -qws&
dft &
else
ts_calibrate
#wiggly -qws&
dft &
fi
********************qtconfig**************************/
qws参数的意义:
QT Embedded 是一种C/S结构的应用程序,需要有一个QT Application做QWS Server,所以程序启动时要qws参数。
4、使用OpenCV库文件
Qt开发的程序一般需要借助qmake生成makefile文件。由于qmake在解析路径的时候不能识别空格,因此需要确保OpenCV的安装路径中不能包含空格。
# 添加头文件路径
HEADERS += CameraConnectDialog.h \
CaptureThread.h \
Config.h \
Controller.h \
FrameLabel.h \
ImageBuffer.h \
ImageProcessingSettingsDialog.h \
MainWindow.h \
MatToQImage.h \
ProcessingThread.h \
Structures.h \
opencv/cv.h \
opencv/cv.hpp \
opencv/cvaux.h \
opencv/cvaux.hpp \
opencv/cvwimage.h \
opencv/cxcore.h \
opencv/cxcore.hpp
# 添加lib文件路径
LIBS += /opt/opencv-arm/lib/libcv.so \
/opt/opencv-arm/lib/libcvaux.so \
/opt/opencv-arm/lib/libcxcore.so \
/opt/opencv-arm/lib/libhighgui.so \
/opt/opencv-arm/lib/libml.so