qt4、触摸屏编译、移植

简介: 主机系统:Ubuntu 8.04 主机编译器:gcc 版本 4.2.4 (Ubuntu 4.2.4-1ubuntu4) 交叉编译器:arm-linux-gcc-3.4.1 软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz          qt-x11-opensource-src-4.5.1.tar.gz          tslib-1.4.tar.gz 目标板:TE2440-2 3。

主机系统:Ubuntu 8.04

主机编译器:gcc 版本 4.2.4 (Ubuntu 4.2.4-1ubuntu4)

交叉编译器:arm-linux-gcc-3.4.1

软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz

         qt-x11-opensource-src-4.5.1.tar.gz

         tslib-1.4.tar.gz

目标板:TE2440-2 35TFT触摸显示屏

 

qt-embedded-linux-opensource-src-4.5.1.tar.gzqt-x11-opensource-src-4.5.1.tar.gz 最新的QT开发软件包可以在http://home.hackbase.com/link.php?url=http://qt.nokia.com%2F主页下载

 

1.安装交叉编译器cross-3.4.1

#mkdir /usr/local/arm

解压cross-3.4.1.tar.bz2

cross-3.4.1.tar.bz2复制到在目录/usr/local/arm下,在终端中进行如下操作:

#cd /usr/local/arm

#tar jxvf cross-3.4.1.tar.bz2

等待解压完成。

#export PATH=/usr/local/arm/3.4.1/bin:$PATH

#arm-linux-gcc -v

这样就把交叉编译器的地址变量设置好了,但这样设置路径变量的方法只在此终端中生效,对其他的终端无效,若要设置对所有用户所有终端都有效的路径变量,在/etc/profile 中最后一行添加“export PATH=/usr/local/arm/3.4.1/bin:$PATH

2.编译安装qt-x11-opensource-src-4.4.3

qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。

qt-x11-opensource-src-4.4.3.tar.gz复制到/root/local/qt目录下,进行解压,在终端中进行如下操作:

#cd /root/local/qt

#tar zxvf qt-x11-opensource-src.tar.gz

解压完成后,得到/root/local/qt/qt-x11-opensource-src-4.4.3目录。下面就开始进行编译了。

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

#./configure –qvfb

#make

#cd tools/qvfb

#make

#cd ../..

#make install

完成后,会在/usr/local目录下生成一个Trolltech目录,形成/usr/local/Trolltech目录,这是qt-x11-opensource-src-4.4.3安装后所在的目录,进入/usr/local/Trolltech会看到一个Qt-4.4.3的目录,将/root/local/qt/qt-x11-opensource-src-4.4.3/tools/qvfb目录下的qvfb相关文件拷贝到/usr/local/Trolltech/Qt-4.4.3/bin目录下,在终端中操作(确定当前目录是/root/local/qt/qt-x11-opensource-src-4.4.3):

#cp tools/qvfb/qvfb* /usr/local/Trolltech/Qt-4.4.3/bin

OKqt-x11-opensource-src-4.4.3就编译安装成功了

你就可以使用/usr/local/Trolltech/Qt-4.4.3下的Qt进行编程开发了。

 

这里,qt-embedded有两个复制:qt-embedded-linux-opensource-src-4.4.3-x86qt-embedded-linux-opensource-src-4.4.3-arm,根据他们的名字可以知道前者是适合x架构的,后者适合arm架构为什么需要两个呢?如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。这里是否有些疑问,qt-x11也是适合x86结构的,这不是和qt-embedded重复了吗?答案是这样的,qt-embedded版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑。前面说过,我们需要qvfb来开发,但是qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。而将qt-embedded编译成arm,又是为什么呢?道理很简单,我最终的qt应用程序需要在arm架构上面运行,当然需要这方面的库,所以编译成arm也就顺理成章了。好了,现在简单的总结一下,首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddeddarm库再次编译就可以得到在arm上能运行的可执行程序。很明显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm架构的。

 

3编译配置QtEmbedded-4.5.2-x86版本

解压qt-embedded-linux-opensource-src-4.5.2.tar.bz2在路径/root/local/qt路径下

# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2

修改解压后的文件夹名称

mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-x86

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

#cd /root/local/qt/qt-x11-opensource-src-4.4.3-x86

./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-x86 -embedded x86 –qvfb

#make(gmake)

#make install(gmake install)

OKQtEmbedded-4.5.2-x86就编译好了。

在需要x86版本QT编译时建立环境变量:

export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/lib/:$LD_LIBRARY_PATH

4编译安装tslib1.4

 

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

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

tslib1.4解压到/home

#./autogen.sh
#./configure --prefix=/home/zhangle1231/duancp/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

#make

#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

export TSLIB_TSDEVICE=/dev/touchscreen/0raw

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

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

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

export TSLIB_FBDEVICE=/dev/fb/0

export QWS_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 I understand错误信息

在开发板/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 xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2

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

 

配置编译

./configure -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib

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

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

qmake.conf文件中加入

QMAKE_INCDIR =/home/zhangle1231/mytslib/include

QMAKE_LIBDIR =/home/zhangke1231/mytslib/lib

重新./configure

#make

#make install

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

 

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

 

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

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

Export LD_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中拷贝到开发板上即可

相关文章
|
7月前
|
编译器 C语言 Windows
cryptopp使用Qt mingw编译,以及海思平台交叉编译
cryptopp使用Qt mingw编译,以及海思平台交叉编译
187 0
|
3月前
|
C++
VS2019编译VTK-9.1.0+Qt5.15.2
本文介绍了在VS2019和Qt 5.15.2环境下编译VTK 9.1.0的过程,包括成功编译无警告和错误的截图、修改的pro文件内容,以及在QML中加入VTK的失败尝试和参考链接。
120 4
|
3月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
3月前
|
C++
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
本文介绍了如何编译整合VTK 9.2、DICOM 0.8、DCMTK 3.6.7和Qt 6.2的步骤,包括安装Qt、CMake配置以及确认相关路径和版本设置。
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
|
3月前
|
Unix 网络虚拟化 C++
VS2022+Qt5.14.2成功编译MITK2022.10
使用VS2022和Qt5.14.2成功编译MITK2022.10的过程,包括编译结果的截图、遇到的编译问题的解决方法、两个重要的注意事项(patch文件格式的修改和ITK-gitclone-lastrun文件的存在),以及参考链接。文中详细描述了如何解决编译过程中遇到的错误C2220和警告C4819,以及如何修改文件编码和尾行格式。
178 1
VS2022+Qt5.14.2成功编译MITK2022.10
|
3月前
编译QCefView+VS2019+QT5.15.2
本文介绍了如何编译QCefView项目,并在VS2019和Qt 5.15.2环境下集成,包括编译结果、要点、cmake部署Qt的方法和相关参考链接。
157 1
编译QCefView+VS2019+QT5.15.2
|
3月前
|
人工智能
三战VS2019编译VTK7.1+Qt5.15.2
本文记录了作者在VS2019环境下编译VTK 7.1与Qt 5.15.2的历程,包括正确配置方法、遇到的编译错误以及解决过程。
|
3月前
|
人工智能 C++
初步编译QT5.15.2+VS2019+VTK8.2.0
本文介绍了在VS2019中编译QT 5.15.2和VTK 8.2.0的过程,包括编译结果、cmake库编译配置和cmake应用配置脚本,以及推荐的参考链接。
166 4
|
3月前
|
计算机视觉
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
这篇文章记录了使用VS2019编译Qt6.2.4、DCMTK3.6.7、VTK9.2.2、ITK5.3和OpenCV4.6.0的过程,包括下载和编译步骤,并提供了遇到编译错误时的解决方案和参考链接。
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
|
3月前
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
QT多插件通信框架CTK编译记录