编译安装tslib1.4
2014-04-26 16:55
225 查看
安装编译过程需用到的程序
# 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.conf中QMAKE_INCDIR和QMAKE_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
在编译ARM版QT应用程序前建立环境变量:
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是一样的,在此不再赘述。
# 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.conf中QMAKE_INCDIR和QMAKE_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
在编译ARM版QT应用程序前建立环境变量:
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是一样的,在此不再赘述。
相关文章推荐
- tslib1.4编译安装到ARM开发板
- 安装qt4过程之编译tslib-1.4
- Ubuntu12.04下编译安装tslib-1.4 图解
- tslib-1.4编译与安装
- 移植tslib1.4 编译问题
- tslib-1.4的安装与移植
- Qt4.5.3 和 tslib1.4 在 ubuntu10.10 下安装及移植
- 安装tslib1.4遇到问题及解决办法
- LNMP环境编译安装centos5x/nginx_1.4/mysql_5.6/php_5.4
- tslib-1.4的安装与移植
- 源码编译安装go,ERROR: Cannot find /root/go1.4/bin/go
- 转载:编译安装Nginx(1.4)《深入理解Nginx》(陶辉)
- qt-embedded-linux-opensource-src-4.8.6 + tslib-1.4 + qwt-6.0.2 编译和移植到mini2440开发板
- 编译tslib1.4的错误和解决方法
- tslib 1.4 交叉编译
- 手把手教你交叉编译tslib1.4(目标平台S3C2410)
- 安装tslib1.4出现的问题汇总
- tslib-1.4的安装与移植
- tslib1.4安装小记
- tslib编译与安装