编译安装tslib1.4

来源:互联网 发布:app软件页面模板源码 编辑:程序博客网 时间:2024/06/05 17:17

安装编译过程需用到的程序

 # apt-get installautoconf(或autoconf2.13
 # apt-get install automake
 # apt-get install libtool

tslib1.4解压到/home

$ ./autogen.sh
$ echo "ac_cv_func_malloc_0_nonnull=yes"> tmp.cache
$ ./configure --host=arm-linux --cache-file=tmp.cache --enable-inputapi=no --prefix=/home/shenjian/Documents/mytslib/tslib
$ make
$ make install

或者使用$make install-strip //生成瘦身应用程序和库

 注意:/home/zhangle1231/duancp/mytslib/tslib1.4安装的目录在装QtEmbedded-4.5.2-arm版本时需要用到此目录

打包mytslib

# tar czvf mytslib.tar.gz tslib

下载到开发板上/usr/local目录解压

tar xzvf mytslib.tar.gz

设置环境变量,校准触摸屏。
修改开发板上:/etc/profile文件

#!/bin/sh

export QTDIR=/usr

export QPEDIR=/usr

export LD_LIBRARY_PATH=/usr/lib

export TSLIB_ROOT=/usr/local/mytslib

export TSLIB_TSEVENTTYPE=H3600

exportTSLIB_TSDEVICE=/dev/touchscreen/0raw

exportTSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  /注意检查ts.conf 参数是否设置正确

exportTSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal  /在执行校准程序calibrate后才会生成此文件

export TSLIB_FBDEVICE=/dev/fb/0

exportQWS_MOUSE_PROTO="Tslib:/dev/touchscreen/0raw"

export QWS_KEYBOARD="USB:/dev/tty"  /假如提示找不到KEYBOARD则需要这条

export TSLIB_CONSOLEDEVICE=none

export QT_QWS_FONTDIR=/usr/lib/fonts/否则提示在/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts找不到字体

export QWS_SIZE=320x240

ln -s /dev/fb/0 /dev/fb0   /需做连接否则找不到设备

注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.你可以测试有没有加载触摸屏驱动,cat /dev/touchscreen/0raw) ,

点击触摸屏,看终端有无显示,若有则表明正确。

修改设置文件ts.conf将对应的参数module_raw h3600注释去掉否则会提示: selected device is not a touchscreen Iunderstand错误信息

在开发板/usr/local/mytslib/bin目录下执行校准触摸屏程序:# ./ts_calibrate –qws

会在/etc目录生成一个:pointercal触摸屏效准的必须文件

可以运行此目录下的其他程序进行测试。

 

5.编译安装QtEmbedded-4.5.2-arm版本

进入/root/local/qt/qt-x11-opensource-src-4.4.3-arm目录,进行编译安装。在终端中进行如下操作:

# tar xjvfqt-embedded-linux-opensource-src-4.5.2.tar.bz2

#mv qt-embedded-linux-opensource-src-4.5.2qt-embedded-linux-opensource-src-4.5.2-arm
# cd qt-embedded-linux-opensource-src-4.5.2-arm

 

配置编译

./configure -verbose -prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools -nomake docs  -qt-gfx-transformed  -qt-gfx-linuxfb -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib -qt-kbd-linuxinput 

注意:最后两个路径如果设置不对则生成的库文件没办法支持触摸屏

假如提示mkspec/qws/linux-arm-g++/qmake.confQMAKE_INCDIRQMAKE_LIBDIR错误信息

qmake.conf文件中加入

QMAKE_INCDIR=/usr/local/tslib/include

QMAKE_LIBDIR=/usr/local/tslib/lib

重新./configure

#make

#make install

如果在编译的过程中出错,在重新make前需要先执行make clean,然后再./configure,再执行make的操作。请不要在windows下复制此命令否则容易出现一些莫名其妙格式的错误提示。

 

安装默认目录在/usr/local/trolltech/QtEmbedded-4.5.2-arm

 

打包编译安装好的QtEmbedded库文件以备以后使用:
   # tar czvfQtEmbedded-4.5.2-arm.tar.gz QtEmbedded-4.5.2-arm

编译ARMQT应用程序前建立环境变量:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/
exportPATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/:$PATH

ExportLD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/:$

LD_LIBRARY_PATH

 

编译简单的QT程序或者QtEmbedded-4.5.2-arm自带的程序例子挂载到开发板执行看是否成功

一般会提示找不到fonts libQtGui.so.4 libstdc++.so.6 libQtNetwork.so.4 libQtCore.so.4 librt.so.1等库文件

/usr/local/trolltech/QtEmbedded-4.5.2-arm/lib和 /usr/local/arm/3.4.1/arm-linux/lib中拷贝到开发板上即可






问题分析:

 问题一:

制作动态根文件系统启动时,提示:Failed to execute /linuxrc.……kernel panic-not syncing:No init found.


这里发生错误是因为制作动态根文件系统时,库没完整拷贝到/nfsroot/rootfs/lib下

cp *.so* /nfsroot/rootfs/lib -d还是卡在这,后来改用-dpR通过了。

 

问题二:

echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache //避免检查ac_cv_func_malloc_0_nonnull

若出现提示: undefined reference to rpl_malloc

解决:

发现config.h.in和config.h里定义了

#undef malloc

#undef realloc

把这两个用//注释掉,编译顺利通过。

 

问题三:

/usr/local/tslib/bin # ./ts_calibrate

提示:

No raw modules loaded.

解决:修改ts.conf

/usr/local/tslib # vi etc/ts.conf


问题四:

tslib库selected device is not a touchscreen I understand解决.

解决: 
1.将内核源代码里的include/linux/input.h中的 
    #define EV_VERSION        0x010001 
    改为: 
    #define EV_VERSION        0x010000 
2.将arm交叉编译工具中的头文件库中的 
    linux/input.h中的 
    #define EV_VERSION        0x010000 
    改为 
    #define EV_VERSION        0x010001 
    再编译tslib库 
一般第一种就可以解决问题了,因此,出现上面情况时,先不要急于换版本,如果二者版本不等,那么改一个就可以

我自己修改内核VERSION为 0x010000和0x010001都不行。

后来把编译器的改成0x010001时,内核为0x010001时可以使用

 

编译器:

[root@localhost 4.5.1]# grep "EV_VERSION" * -nR

arm-none-linux-gnueabi/sys-root/usr/include/linux/input.h:32:#define EV_VERSION 0x010001

内核代码:

# vim /home/test/4-3-1/linux-3.0.1/include/linux/input.h

#define EV_VERSION 0x010001 // gjl 0x010001

 

问题五:

./ts_calibate 校准触摸屏后未产生校准文件,提示Illegal instruction

百度提示不支持浮点型?

解决:

用4.4编译器的glibc库,解决了非法指令,可能是其他编译器的glib库不完整导致。

 

全套换成4.4编译器的

/usr/local/tslib/bin # ./ts_calibrate

xres = 480, yres = 272

Took 5 samples...

Top left : X = 12442 Y = 9939

Took 4 samples...

Top right : X = 4159 Y = 9793

Took 4 samples...

Bot right : X = 4092 Y = 6531

Took 3 samples...

Bot left : X = 12635 Y = 6443

Took 4 samples...

Center : X = 8458 Y = 8201

624.591797 -0.045147 -0.000891

550.521240 0.000166 -0.050836

Calibration constants: 40933248 -2958 -58 36078960 10 -3331 65536

校正后生成校准文件

 

小结:这里使用4.4.1编译器,编译器和内核都使用EV_VERSION 0x010001,glib使用4.4.1里面的。就成功移植了tslib。


进入解压目录后./configure ...-qt-mouse-tslib...其它的编译选项,我就不说了,一般不会出什么问题。-qt-mouse-tslib这个选项是专门针对触摸屏的。有相当多一部人会出这样一个问题:Thetslib functionality test failed!You might need to modify the include and library search paths by editing QMAKE_INCDIR and QMAKE_LIBDIR in...

那么你可以这样做:在../qt-embedded-linux-opensource-src-4.5.3/mkspecs/qws/linux-arm-g++/qmake.conf文件中加入
QMAKE_INCDIR =/usr/local/tslib/include

QMAKE_LIBDIR =/usr/local/tslib/lib
当然也可在./configure里加入-I/=/usr/local/tslib/include -L=/usr/local/tslib/lib来解决问题,可是当你试过了以上方法后仍不奏效,怎么办?这也是我今天特意写这文章的原因。

特别要提到CuteQt Blog一篇名为''qtopia/qt-extended的配置时错误(configure error)"的文章。上面提到,这样的问题实际的解决办法:在./configure选项里加入-verbose,这样可以比较详细地告诉你错误的原因,本人也是在这样的提示下找到最终的问题所在。文章提到的第二种方法,其实效果和加-verbose是一样的,在此不再赘述。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 左边脸突然肿了怎么办 左半边脸皮肤疼怎么办 脸内侧的肉肿了怎么办 上火引起的脸肿怎么办 脸肿里面有硬块怎么办 内分泌失调引起的肥胖怎么办 宝宝接种证丢了怎么办 不给补办接种证怎么办 儿童接种证丢了怎么办 疫苗接种本丢了怎么办 脊灰滴剂滴多了怎么办 鞋小了挤脚趾头怎么办 大母脚趾头疼是怎么办 小脚趾内侧长茧怎么办 小脚趾肿了很痛怎么办 穿袜子大脚趾痛怎么办 脚指头长水泡很痒怎么办 走路脚打起泡了怎么办 剪完脚趾甲肿了怎么办 大脚趾关节处疼怎么办 战士10穿不进去怎么办 脚上皮肤干燥起皮怎么办 脚趾头冻了很痒怎么办 大脚趾里面有脓怎么办 大脚趾肉肿了怎么办 大脚趾边上肿了怎么办 大母脚趾关节疼怎么办 大脚趾有点歪了怎么办 大脚趾扭伤肿了怎么办 大脚趾外翻怎么办 知乎 颈椎带着胳膊疼怎么办 胳膊酸困无力是怎么办 腰疼引起的腿麻怎么办 手臂到手指麻痛怎么办 拔完智齿特别疼怎么办 躺着胃烧的难受怎么办 喝酒胃烧的难受怎么办 舌头破了特别疼怎么办 舌头又厚又大怎么办 牙齿咬到舌头了怎么办 舌头起了好多泡怎么办