分类: LINUX
2011-05-14 20:28:04
以qt-embedded-linux-opensource-src-4.4.3.tar.gz为例
一、编译tslib
下载最新的开发版本,见
·解压到/home下
·生成 configure 文件,配置、编译、安装
#./autogen.sh
#./configure --prefix=/home/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
/**************************
echo "ac_cv_func_malloc_0_nonnull=yes" > tslib/arm-linux.autogen #为了防止出现undefined reference to `rpl_malloc' 错误
***************************/
#make
#make install-strip //生成瘦身应用程序和库
二、编译qt源码
1、将源码解压到/home下
2、设置环境变量:
指定qt源码的路径 export QTDIR=/home/qt-embedded-linux-opensource-src-4.4.3
指定交叉编译工具 export PATH=/usr/local/arm/3.4.1/bin:$PATH
3、配置、编译、安装
#./configure -xplatform qws/linux-arm-g++ -embedded arm -shared -little-endian -
qt-kbd-usb -qt-mouse-tslib -qt-libpng -qt-libjpeg -qt-gif -depths 4,8,16,32 -confirm-license -
prefix /home/qt-embedded-opensource-4.4.3/ -I/home/mytslib/include -L/home/mytslib/lib
#time gmake
#time gmake install
4、说明
·-qt-libjpeg -qt-gif (会在/home/qt-embedded-opensource-4.4.3/plugins/imageformats/
下生成多个插件so库文件)
·-qt-mouse-tslib(添加触摸屏,注意要将它的头文件和库指定好即-I/home/mytslib/include -
L/home/mytslib/lib,如果不添加链接的头文件和库配置时会提示:The tslib functionality test failed!
You might need to add additional include and library search paths by passing the -I and -L
switches to ,in -xplatform qws/linux-arm-g++)
三、向目标板上库文件和板子上的环境配置,注意目录的创建
在板子上创建两个目录:qt4.4.3和tslib
1、移植qt库:
·将/home/qt-embedded-opensource-4.4.3/lib下的动态库都拷贝到板子上qt4.4.3/lib,注意链接;
·将字体拷贝到板子上/home/qt-embedded-opensource-4.4.3/lib/fonts,注意:不需要将所有的字体
都拷贝到板子上qt4.4.3/lib/fonts,用一个就行;
·移植jpeg,gif的插件库,将/home/qt-embedded-opensource-4.4.3/plugins/imageformats中的文
件拷贝到板子上qt4.4.3/plugins/imageformats;
2、移植tslib库及测试程序
·将/home/mytslib/lib/的动态库移植到板子上的tslib/lib,注意链接;
·将/home/mytslib/lib/ts的动态库移植到板子上的tslib/lib/ts
·将/home/mytslib/bin/的测试文件ts_calibrate移植到板子上的tslib/bin
·将/home/mytslib/etc/ts.conf移植到板子上的tslib/etc/
3、设置目标板上的环境变量
export QWS_DISPLAY='/dev/fb1'
#export QWS_KEYBOARD='LIRC:/dev/lircd'
export QWS_MOUSE_PROTO='TSLIB:/dev/input/event0'
export QWS_SIZE='800x600'
export TSLIB_CALIBFILE='/*/tslib/etc/pointercal'
export TSLIB_CONFFILE='/*/tslib/etc/ts.conf'
export TSLIB_CONSOLEDEVICE='none'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_PLUGINDIR='/*/tslib/lib/ts'
export TSLIB_TSDEVICE='/dev/input/event0'
export LD_LIBRARY_PATH=/*/qt4.4.3/plugins/imageformats/:/*/qt4.4.3/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/*/qt4.4.3/plugins/
export QT_QWS_FONTDIR=/*/qt4.4.3/lib/fonts
四、测试tslib
$cd /*/tslib/bin
$./ts_calibrate
会在触摸屏上显示一个焦点,点击这一点,焦点会移动,继续点击,直到5个点都点完了为止,这就是
五点测试,点击完后,会在/*/tslib/etc/下产生pointercal文件,此文件记录了,刚点击的五点的位置坐标
注意:目标板的kernel中一定要添加了tslib驱动,不然会提示:selected device uses a different
version of the event protocol than tslib was compiled for
五、编写带有jpeg图片的应用程序
1、将图片编译到应用程序里;编译出来的可执行文件太大,cpu占用多。
a、创建应用程序
例如:main.cpp
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel;
label->setPixmap(QString::fromUtf8(":/images/test.jpg"));
label->setGeometry(0,0,800,600);
label->show();
return app.exec();
}
b、创建资源文件*.qrc,应用程序同一目录下有一个images文件夹中有一张test.jpg图片
c、创建工程文件*.pro
#qmake -project //生成工程文件
修改工程文件*.pro ;添加 QTPLUGIN += qjpeg和RESOURCES += tmp.qrc
QTPLUGIN += qjpeg
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
SOURCES += main.cpp
RESOURCES += tmp.qrc
d、编译
#qmake
#make
e、将生成的可执行文件放到板子上运行,就会在触摸屏上显示
2、图片在板子上,应用程序中指定图片的路径;编译出的可执行文件小,cpu占用率小;路径一定要指定对
a、创建应用程序
例如:main.cpp
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel;
label->setPixmap(QString::fromUtf8("images/test.jpg"));
label->setGeometry(0,0,800,600);
label->show();
return app.exec();
}
b、创建工程文件
#qmake -project //生成工程文件
修改工程文件*.pro ;添加 QTPLUGIN += qjpeg
QTPLUGIN += qjpeg
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
SOURCES += main.cpp
c、编译
#qmake
#make
d、运行
将可执行文件拷到板子上;
在可执行的文件的同一目录下创建images文件夹,并将test.jpeg放到该目录下;
运行可执行文件,就会在触摸屏上显示