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

相关文章
|
1月前
|
开发框架 Unix Linux
深度探索:Qt CMake工程编译后的自动打包策略
深度探索:Qt CMake工程编译后的自动打包策略
33 0
|
3月前
Qt rcc静态资源编译及使用 QtInstallframework 打包成安装包后图标丢失问题
Qt rcc静态资源编译及使用 QtInstallframework 打包成安装包后图标丢失问题
24 0
|
1月前
|
Unix 编译器 开发者
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之windows环境编译
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之windows环境编译
|
7月前
|
编译器 C语言
QT编译fabs not declared in this scope
QT编译fabs not declared in this scope
78 0
|
9月前
|
测试技术
QT --- VS2017+Qt5.12 编译报错【E2512 功能测试宏的参数必须是简单标识符 】的解决方法
QT --- VS2017+Qt5.12 编译报错【E2512 功能测试宏的参数必须是简单标识符 】的解决方法
253 0
|
3月前
|
编译器
QT creator开发环境下 界面更改后运行程序不能实时更新或者在源文件添加该控件后无法编译的问题
在使用QT Creator开发界面的过程中,偶尔会出现添加控件后,运行程序后,界面控件无法更新的情况,或者在源文件使用该控件却出现无法编译的情况,使用QT Creator 4.8.2也会出现这个情况,也不知道这种情况会不会在以后有所改善。
66 0
|
24天前
|
编译器
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
|
1月前
|
Linux 开发工具 C语言
【研究Qt webengine 模块编译】linux 交叉编译qt5.12的webengine模块成功的条件
【研究Qt webengine 模块编译】linux 交叉编译qt5.12的webengine模块成功的条件
55 1
|
2月前
|
IDE 开发工具 C语言
QT案例IDE编写 -- 编译操作
QT案例IDE编写 -- 编译操作
15 0

热门文章

最新文章

推荐镜像

更多