本来想着花半个星期的时间把QT及TSLIB的移植搞定,但结果出现了一些令我一时半会无法解
决的问题。第一,移植完QT,在QT上面跑了一个hello world程序,结果提示缺两个库,我弄了两个
假库骗了过去,结果也出来了HELLOWORLD。但让我疑惑的是,动态编译中,编译连接的库应该
和运行库一样,为什么我把编译时的库全拷过去,还提示缺库呢?(这个问题是Makefiel在作怪)
第二,移植tslib的时候,换了几个tslib,最终算是成功了半个,半个的意思是,测试文件ts_calulate运
行没问题,可ts_test运行的是,光标一摸就飞了,再也找不到了。我用友善的一线触摸。(这个是
下载的tslib有问题,需要改程序)。但又出现两个问题,第一,运行QT程序的时候,光标只能点到
点之间跳转,不能滑动。第二,光标点击QT按钮没反应。
这件事情到此也够一段落,用了我一周的时间,整理一下文档。。毕竟,这次移植是我按照原
理去移植的,而不是完全照抄网上的步骤做的,所以在此过程中我也学会了不少东西。
一,到 http://qt.nokia.com/下载qt-embedded-linux-opensource-src-4.5.3.tar.gz和qt-x11-opensource-src-4.5.3.tar.gz,还有
tslib-1.4.tar.gz,解压到相应目录。
二,安装tslib1.4
下载,解压进目录。大家都会。
我用的是tiny6410的一线触摸,所以需要改程序,照别人的:
打开tslib/plugins/input-raw.c
把其中的ts_input_read 函数改成如下:
static int ts_input_read(struct tslib_module_info *inf,
struct ts_sample *samp, int nr)
{
printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
struct tslib_input *i = (struct tslib_input*)inf;
struct tsdev *ts = inf->dev;
struct input_event ev;
int ret = nr;
int total = 0;
unsigned long jjts;
while(total<nr)
{
ret =read(ts->fd, &jjts,sizeof(jjts));
if (ret==-1) continue;
samp->pressure=(jjts>>31)& 0x01;
samp->x=(jjts>>16)& 0xffff;
samp->y=jjts & 0xffff;
samp++;
total++;
}
ret=total;
return ret;
}
然后找到 tslib/plugins/input-raw.c
把其中的ts_input_read 函数改成如下:
static int ts_input_read(struct tslib_module_info *inf,
structts_sample *samp, int nr)
{
printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
struct tslib_input *i = (struct tslib_input*)inf;
struct tsdev *ts = inf->dev;
struct input_event ev;
int ret = nr;
int total = 0;
unsigned long jjts;
while(total<nr)
{
ret =read(ts->fd, &jjts,sizeof(jjts));
if (ret==-1) continue;
samp->pressure=(jjts>>31)& 0x01;
samp->x=(jjts>>16)& 0xffff;
samp->y=jjts & 0xffff;
samp++;
total++;
}
ret=total;
return ret;
}
然后找到 tslib/plugins/input-raw.c
把其中的ts_input_read 函数改成如下:
static int ts_input_read(struct tslib_module_info *inf,
structts_sample *samp, int nr)
{
printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
struct tslib_input *i = (struct tslib_input*)inf;
struct tsdev *ts = inf->dev;
struct input_event ev;
int ret = nr;
int total = 0;
unsigned long jjts;
while(total<nr)
{
ret =read(ts->fd, &jjts,sizeof(jjts));
if (ret==-1) continue;
samp->pressure=(jjts>>31)& 0x01;
samp->x=(jjts>>16)& 0xffff;
samp->y=jjts & 0xffff;
samp++;
total++;
}
ret=total;
return ret;
}
./autogen.sh
./configure --host=arm-linux –cache-file=arm-linux.cache --prefix=/自己的目录
make
make install
然后把安装后的目录拷到开发板
打开/tslib/etc/ts.conf 开释这个module_raw_input
新建/etc/profile,设置环境变量,我的如下:
export TSLIB_ROOT=/tslib
export TSLIB_TSDEVICE=/dev/touchscreen-1wire
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export QWS_MOUSE_PROTO=tslib:/dev/touchscreen-1wire
export QWS_SIZE=800x480
export TSLIB_FBDEVICE=/dev/fb0
export QT_QWS_FONTDIR=/tiny6410/lib/fonts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:/tiny6410/lib
然后source /etc/profie就好了。
运行/tslib/bin/下的文件,没问题。
三,安装qt-x11-opensource-src-4.5.3
# tar -zxvf qt-x11-opensource-src-4.5.3.tar.gz
# cd qt-x11-opensource-src-4.5.3
# ./configure
# make
# make install
qt-x11 被安装到此目录下/usr/local/Trolltech/
编译qvfb:
# cd qt-x11-opensource-src-4.5.3/tools/qvfb
# make
这样就好了,这个没什么好说的。
四,安装qt-embedded-linux-opensource-src-4.5.3
# tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz
# cd qt-embedded-linux-opensource-src-4.5.3
#./configure ./configure -prefix /tiny6410 -release -shared -fast -pch -no-qt3support -qt-sql-
sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -nomake tools -nomake
examples -nomake demos -optimized- qmake -no-nis -no-opengl -no-cups -no-xcursor -no-
xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-
debug-info -xplatform qws/linux-arm-g++ - embedded arm -depths 16 -no-qvfb -no-gfx-qvfb -no
-kbd-qvfb -no-mouse-qvfb -qt-gfx-linuxfb -qt-kbd-usb -confirm-license -qt-mouse-tslib -I
/tslib安装目录/include -L /tslib安装目录/lib
(我自己的设置,你可以通过查看./configure -help来设置)
#make
#make install
因为每次用是都用设qmake环境变量,所以借鉴网友的做法,在这个根目录下建一个脚本文件,
进去的时候执行一下.
然后进安装目录,把lib拷到开发板,设置开发板相应目录就行了。
关于字体,lib下面是有的,只要设环境变量就行了,我不知道网上为什么有下面这一说法,或许
是我还没用到吧。反正摘录下来,万一以后用到)
(接下来事字体(在lib目录的fonts),字体比较麻烦,
根据文档说明,Qtopia默认查找字体的目录是/usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts
我们有两种方式来挂载字体库。
第一种:
#mount -t ramfs ramfs /usr
#cd /usr
#mkdir local && mkdir local/Trolltech
#ln -s /mnt local/Trolltech/QtEmbedded-4.5.3-arm
#ls /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts
这样我们就配置好了。
如果上一种方法不行,看下面这种,一定可以!
第二种:
首先用到刚才的备用的nfs目录 fonts(看名字就晓得用来挂载字体库的)
#cp -arf /usr/local/Trolltect/QtEmbedded-4.5.3-arm/lib/fonts /fonts
在开发板里
#mkdir /usr/local && mkidr /usr/local/Trolltech &&mkdir /usr/local/Trolltech/QtEmbedded-4.5.3-arm
&&/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib
#mount -t nfs 192.168.0.10:/fonts /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib -o nolock
这样就把字体库链接到 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts目录来了)
然后弄一个QT程序进去试试就好了。
(欢迎转载,欢迎交流994796397)
决的问题。第一,移植完QT,在QT上面跑了一个hello world程序,结果提示缺两个库,我弄了两个
假库骗了过去,结果也出来了HELLOWORLD。但让我疑惑的是,动态编译中,编译连接的库应该
和运行库一样,为什么我把编译时的库全拷过去,还提示缺库呢?(这个问题是Makefiel在作怪)
第二,移植tslib的时候,换了几个tslib,最终算是成功了半个,半个的意思是,测试文件ts_calulate运
行没问题,可ts_test运行的是,光标一摸就飞了,再也找不到了。我用友善的一线触摸。(这个是
下载的tslib有问题,需要改程序)。但又出现两个问题,第一,运行QT程序的时候,光标只能点到
点之间跳转,不能滑动。第二,光标点击QT按钮没反应。
这件事情到此也够一段落,用了我一周的时间,整理一下文档。。毕竟,这次移植是我按照原
理去移植的,而不是完全照抄网上的步骤做的,所以在此过程中我也学会了不少东西。
一,到 http://qt.nokia.com/下载qt-embedded-linux-opensource-src-4.5.3.tar.gz和qt-x11-opensource-src-4.5.3.tar.gz,还有
tslib-1.4.tar.gz,解压到相应目录。
二,安装tslib1.4
下载,解压进目录。大家都会。
我用的是tiny6410的一线触摸,所以需要改程序,照别人的:
打开tslib/plugins/input-raw.c
把其中的ts_input_read 函数改成如下:
static int ts_input_read(struct tslib_module_info *inf,
struct ts_sample *samp, int nr)
{
printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
struct tslib_input *i = (struct tslib_input*)inf;
struct tsdev *ts = inf->dev;
struct input_event ev;
int ret = nr;
int total = 0;
unsigned long jjts;
while(total<nr)
{
ret =read(ts->fd, &jjts,sizeof(jjts));
if (ret==-1) continue;
samp->pressure=(jjts>>31)& 0x01;
samp->x=(jjts>>16)& 0xffff;
samp->y=jjts & 0xffff;
samp++;
total++;
}
ret=total;
return ret;
}
然后找到 tslib/plugins/input-raw.c
把其中的ts_input_read 函数改成如下:
static int ts_input_read(struct tslib_module_info *inf,
structts_sample *samp, int nr)
{
printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
struct tslib_input *i = (struct tslib_input*)inf;
struct tsdev *ts = inf->dev;
struct input_event ev;
int ret = nr;
int total = 0;
unsigned long jjts;
while(total<nr)
{
ret =read(ts->fd, &jjts,sizeof(jjts));
if (ret==-1) continue;
samp->pressure=(jjts>>31)& 0x01;
samp->x=(jjts>>16)& 0xffff;
samp->y=jjts & 0xffff;
samp++;
total++;
}
ret=total;
return ret;
}
然后找到 tslib/plugins/input-raw.c
把其中的ts_input_read 函数改成如下:
static int ts_input_read(struct tslib_module_info *inf,
structts_sample *samp, int nr)
{
printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
struct tslib_input *i = (struct tslib_input*)inf;
struct tsdev *ts = inf->dev;
struct input_event ev;
int ret = nr;
int total = 0;
unsigned long jjts;
while(total<nr)
{
ret =read(ts->fd, &jjts,sizeof(jjts));
if (ret==-1) continue;
samp->pressure=(jjts>>31)& 0x01;
samp->x=(jjts>>16)& 0xffff;
samp->y=jjts & 0xffff;
samp++;
total++;
}
ret=total;
return ret;
}
./autogen.sh
./configure --host=arm-linux –cache-file=arm-linux.cache --prefix=/自己的目录
make
make install
然后把安装后的目录拷到开发板
打开/tslib/etc/ts.conf 开释这个module_raw_input
新建/etc/profile,设置环境变量,我的如下:
export TSLIB_ROOT=/tslib
export TSLIB_TSDEVICE=/dev/touchscreen-1wire
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export QWS_MOUSE_PROTO=tslib:/dev/touchscreen-1wire
export QWS_SIZE=800x480
export TSLIB_FBDEVICE=/dev/fb0
export QT_QWS_FONTDIR=/tiny6410/lib/fonts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:/tiny6410/lib
然后source /etc/profie就好了。
运行/tslib/bin/下的文件,没问题。
三,安装qt-x11-opensource-src-4.5.3
# tar -zxvf qt-x11-opensource-src-4.5.3.tar.gz
# cd qt-x11-opensource-src-4.5.3
# ./configure
# make
# make install
qt-x11 被安装到此目录下/usr/local/Trolltech/
编译qvfb:
# cd qt-x11-opensource-src-4.5.3/tools/qvfb
# make
这样就好了,这个没什么好说的。
四,安装qt-embedded-linux-opensource-src-4.5.3
# tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz
# cd qt-embedded-linux-opensource-src-4.5.3
#./configure ./configure -prefix /tiny6410 -release -shared -fast -pch -no-qt3support -qt-sql-
sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -nomake tools -nomake
examples -nomake demos -optimized- qmake -no-nis -no-opengl -no-cups -no-xcursor -no-
xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-
debug-info -xplatform qws/linux-arm-g++ - embedded arm -depths 16 -no-qvfb -no-gfx-qvfb -no
-kbd-qvfb -no-mouse-qvfb -qt-gfx-linuxfb -qt-kbd-usb -confirm-license -qt-mouse-tslib -I
/tslib安装目录/include -L /tslib安装目录/lib
(我自己的设置,你可以通过查看./configure -help来设置)
#make
#make install
因为每次用是都用设qmake环境变量,所以借鉴网友的做法,在这个根目录下建一个脚本文件,
进去的时候执行一下.
然后进安装目录,把lib拷到开发板,设置开发板相应目录就行了。
关于字体,lib下面是有的,只要设环境变量就行了,我不知道网上为什么有下面这一说法,或许
是我还没用到吧。反正摘录下来,万一以后用到)
(接下来事字体(在lib目录的fonts),字体比较麻烦,
根据文档说明,Qtopia默认查找字体的目录是/usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts
我们有两种方式来挂载字体库。
第一种:
#mount -t ramfs ramfs /usr
#cd /usr
#mkdir local && mkdir local/Trolltech
#ln -s /mnt local/Trolltech/QtEmbedded-4.5.3-arm
#ls /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts
这样我们就配置好了。
如果上一种方法不行,看下面这种,一定可以!
第二种:
首先用到刚才的备用的nfs目录 fonts(看名字就晓得用来挂载字体库的)
#cp -arf /usr/local/Trolltect/QtEmbedded-4.5.3-arm/lib/fonts /fonts
在开发板里
#mkdir /usr/local && mkidr /usr/local/Trolltech &&mkdir /usr/local/Trolltech/QtEmbedded-4.5.3-arm
&&/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib
#mount -t nfs 192.168.0.10:/fonts /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib -o nolock
这样就把字体库链接到 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts目录来了)
然后弄一个QT程序进去试试就好了。
(欢迎转载,欢迎交流994796397)