构建qt4.8.6嵌入式qt环境

                                                                                                                      构建qt4.8.6嵌入式qt环境

需要源代码:

1、qt-everywhere-opensource-src-4.8.6.tar.gz   

2.  tslib-1.4.tar.gz

tslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。因此这里先编译安装tslib,这样在后面编译Qt的时候才能打包编译进去。不论是电子屏还是电容屏,只要满足linux输入子系统都可以使用tslib库。

编译过程很简单,首先加查以下软件是否安装

sudo apt-get install automakesudo apt-get install autogensudo apt-get install autoconf

# tar -zxvf tslib-1.4.tar.gz# cd tslib# ./autogen.sh#./configure --host=arm-linuxac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/usr/local/tslib

# make# make install

在根文件系统/etc下建立profile文件

export TSLIB_ROOT=/usr/local/tslib1.4

export TSLIB_TSDEVICE=/dev/event0

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/local/tslib1.4/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

说明: 
   1.  TSLIB_TSDEVICE :触摸屏设备文件名 
   2.  TSLIB_CALIBFILE:校准的数据文件,由ts_calibrate校准程序生成。 
   3.  TSLIB_CONFFILE :配置文件名。 
   4.  TSLIB_PLUGINDIR:插件目录 
   5.  TSLIB_CONSOLEDEVICE :控制台设备文件名 
   6.  TSLIB_FBDEVICE   :LCD设备名

Tslib 的应用程序需要通过读取环境变量来获取相关硬件的信息链接库的信息。

在分析ts.conf 这个文件建立在/etc目录下,内容:

# Uncomment if you wish to use the linux input layer event interface

module_raw input

 

# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d

# module_raw collie

 

# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860

# module_raw corgi

 

# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface

# module_raw ucb1x00

 

# Uncomment if you're using an HP iPaq h3600 or similar

# module_raw h3600

 

# Uncomment if you're using a Hitachi Webpad

# module_raw mk712

 

# Uncomment if you're using an IBM Arctic II

# module_raw arctic2

 

module pthres pmin=1

module variance delta=30

module dejitter delta=100

module linear

其中有”#”开头的都是被注释掉的,真正有用的信息为:

module_raw input

module pthres pmin=1

module variance delta=30

module dejitter delta=100

module linear

module_raw有许多种,这里只使用input(即Linux的input子系统,设备文件名称为/dev/input/event0)。后面的几个module还没有深入了解,它们使用的库就在tslib/lib/ts中,最后三个模块的字面意思是“方差(滤波)”、“去抖动(去噪)”、“线性(坐标变换)”

我在/us/local目录下建立tslib.1.4目录

把编译好的库文件copy到自己的根文件系统种

下面是我的根文件系统/usr/local/tslib1.4/lib/ts$ ls下的内容:

arctic2.la  corgi.la     h3600.la  linear_h2200.la  mk712.la   ucb1x00.la

arctic2.so  corgi.so     h3600.so  linear_h2200.so  mk712.so   ucb1x00.so

collie.la   dejitter.la  input.la  linear.la        pthres.la  variance.la

collie.so   dejitter.so  input.so  linear.so        pthres.so  variance.so

这些红色的就是对应TSLIB_PLUGINDIR插件,tslib程序会在读取环境变量后根据ts.conf中指明要加载的模块来调用这些库文件。

这个时候就可以启动开发板运行tslib库自带的应用程序了比如ts_calibrate

 

注意:

#cd/opt/tslib/bin
#./ts_calibrate
报错 :

Couldnt load module input  No raw modules loaded 

发生这种问题的原因可能有很多种:

首先检查module_raw input这项在/etc/ts.conf是否已经打开

其次关注

export TSLIB_ROOT=/usr/local/tslib1.4

export TSLIB_TSDEVICE=/dev/event0

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/local/tslib1.4/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

这些环境变量

export TSLIB_TSDEVICE=/dev/event0

这项是否存在,/dev/event0输入子系统事件是否存在,这个子系统是由底层驱动决定的,必须保证触摸屏的底层驱动正常工作。

判断这些指定的环境目录在其目录下是否真的存在,如果有误请对应自己的根文件系统修改,然后reboot重启更新环境变量。(注意都是在自己的开发板目录下执行)

 

下一步编译qt4.8.6

qt4.8.6的目录下创建一个脚本文件auto_config.sh

#!/bin/sh

./configure \

-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-openssl \

-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-mouse-tslib \

-I/usr/local/tslib/include \

-L/usr/local/tslib/lib

这项配置项就不解释了,自行百度,-no开头的一看就是编译时不需要此部件

-qt-mouse-tslib \

-I/usr/local/tslib/include \

-L/usr/local/tslib/lib

这三项十分重要,嵌入式环境大多需要触摸屏的支持,第一行表明支持触摸屏,第二行指明tslib库的头文件路径,编译时需要用到,第三行指明tslib库的路径,编译时需要用到。

 

编译时也许会报错,我用arm-linux-gcc 4.3.3的编译器是遇到:

undefined reference to `__sync_add_and_fetch_4'报错

编译器的问题,打开友善之臂逛网http://www.arm9.net/download.asp,下载arm-linux-gcc 4.4.3 可以完美解决这个问题。之后不要忘记复制这个编译器下的glib库到自己的根文件系统。编译成功后,同样和需要支持tslib工作一样,qt也需要为它设置环境变量。

打开/etc/profile(注意是开发板文件系统路径)

增加:

export QWS_MOUSE_PROTO=tslib:/dev/event0

export QWS_SIZE=800*480

export QTDIR=/usr/local/qt4.8.6

export QT_QWS_FONTDIR=$QTDIR/lib/fonts

export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH

export QT_PLUGIN_PATH=$QTDIR/plugins/

QWS_MOUSE_PROTO环境变量主要是帮助QMouseDriverFactory也就是Qt鼠标设备的枚举者来创建你想要的鼠标设备而不是系统默认的。

默认该环境变量时空的,其实大部分情况下空就可以了,Qt能够根据系统配置猜测出你想要的设备,并且这个大多数情况下好像都是正确的。不过如果错了我们可以通过设置该变量来纠正。

该环境变量的格式如下:

export QWS_MOUSE_PROTO="<driver>[:<driver specific options>]         <driver>[:<driver specific options>]         <driver>[:<driver specific options>]"

中间可以通过空格来指定多个鼠标设备,目前我也没用到过,因为一般有一个输入设备就够了,最常用的格式例如:

export QWS_MOUSE_PROTO="tslib:/dev/ts"

第一个,指明要使用tslib这个驱动,对应的设备名字是/dev/ts

其他的环境变量一看就明白,一笔带过。

编译一个QT自带的小example后放入自己的文件系统

Mkyaff2制作根文件系统后,重新烧写,启动后执行这个example就可以看到已经成功了。

 

 

 

 

 

 

 

 

 

 

VS2015是指Visual Studio 2015,它是由微软公司推出的一款集成开发环境(IDE),主要用于开发各种类型的应用程序。VS2015具有强大的功能,包括代码编辑器、调试器、图形化界面设计工具和版本控制等,能够提高开发效率和代码质量。 Qt4.8.6是指Qt开发框架的一个版本,Qt是一套跨平台的C++应用程序开发框架,能够快速地创建高质量的图形用户界面和功能丰富的应用程序。Qt4.8.6Qt框架的一个比较早期的版本,虽然现在已经有了更高版本的Qt,但它仍然被一些开发者广泛使用。 使用VS2015结合Qt4.8.6进行开发,可以将两者的优势结合起来,实现更多功能和更好的开发体验。VS2015提供了强大的开发工具和调试功能,能够帮助开发者更轻松地编写和调试Qt应用程序的代码。而Qt4.8.6则提供了丰富的自定义控件和图形界面设计工具,能够快速构建各种不同风格的界面。 在使用VS2015和Qt4.8.6进行开发时,可以使用VS2015的开发环境来编写和调试Qt应用程序的代码,同时利用Qt提供的工具和组件来创建界面和添加功能。这样可以提高开发效率,减少不必要的代码重复和错误。 总之,VS2015与Qt4.8.6结合使用,可以提供更好的开发体验和更丰富的功能选择,帮助开发者快速构建高质量的应用程序。当然,如果有更高版本的Qt可用,也可以考虑升级到最新版本,以获取更多的优化和新特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值