QT4.7.3移植GT2440

平台:  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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值