最终版Qt4.5.2和 - tslib1.4在ubuntu10.04 - 下安装及移植

更新时间:2024-04-27 21:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Qt4.5.2 和 tslib1.4 在 ubuntu10.04 下安装及移植 Hrl 2012.3.2

1 开发环境

操 作 系统:Vmware6.0 + Ubuntu 8.04 交叉编译器:arm-linux-gcc-4.4.3(

“友善之臂”提供,具体安装方法见第 10 节) 目 标 板:友善之臂 mini2440 + 统宝 3.5 寸屏 2 准备工作

2.1 下载源码包

在ftp://ftp.qtsoftware.com/qt/source/下载: (我在该目录下找不到下面包,然后在ftp://ftp.trolltech.com/qt/source/下则可找到) qt-embedded-linux-opensource-src-4.5.2.tar.gz qt-x11-opensource-src-4.5.2.tar.gz

在http://search.download.csdn.net/search/tslib 1.4上下载: tslib1.4.tar.gz

2.2 配置 ubuntu 10.04 编译环境 安装 g++:

apt-get -y install g++

安装编译 X11 用到的库:

apt-get install libx11-dev libxext-dev libxtst-dev

2.3 建立目录

/tmphrl (源码包存放的目录) 在终端中执行: Mkdir /tmphrl 3 安装交叉编译器

使用符合EABI标准的arm-linux-gcc-4.4.3(合EABI标准的交叉编译器, 彻底解决编译Qtopia2/Qt4时出现的\问题) 3.1 解压 arm-linux-gcc-4.4.3.tgz

解压arm-linux-gcc-EABI.tar到/usr/local/arm/4.4.3 3.2 设置路径变量 在/etc/profile 中

最后一行添加“export PATH=/usr/local/arm/4.4.3/bin:$PATH” ,保存退出,注销系统即生效。

4 编译及安装qt-x11-opensource-src-4.5.2

4.1 编译安装 qt-x11 及 qvfb

qt-x11 版本可以产生 Qt 开发工具,如 designer、qvfb,嵌入式的开发有了 qvfb,就可以

不需要实际的开发板,也可以开发 Qt 应程序。 tar zxvf qt-x11-opensource-src-4.5.2.tar.gz cd qt-x11-opensource-src-4.5.2

./configure (会出现选择商业还是开源,输入‘O’回车,还会弹出是否接受协议,输入“yes”回车)

make (需要超长的时间,我的机子用了差不多3个小时) cd tools/qvfb make cd ../..

make install

4.2 复制 qvfb 相关文件

make install 完成后, 会在/usr/local 目录下生成一个Trolltech目录,

把/tmphrl/qt-x11-opensource-src-4.5.2/tools/qvfb 目录下的qvfb相关文件拷贝到/usr/local/Trolltech/Qt-4.5.2/bin

cp -r /tmphrl/qt-x11-opensource-src-4.5.2/tools/qvfb /usr/local/Trolltech/Qt-4.5.2/bin/qvfb

5 编译及安装qt-embedded-linux-opensource-src-4.5.2

5.1 解压 qt 文件

将 qt-embedded-linux-opensource-src-4.5.2.tar.gz 复制到/tmphrl目录下进行解压,解 压 完 成 后 , 得 到 /tmphrl/qt-embedded-linux-opensource-src-4.5.2 目 录 。 将 qt-embedded-linux-opensource-src-4.5.2 重命名为 qt-embedded-linux-opensource-src-4.5.2-x86。 再 解 压 一 下 qt-embedded-linux-opensource-src-4.4.3.tar.gz , 并 重 命 名 为 qt-embedded-linux-opensource-src-4.5.2-arm,

这 里 , qt-embedded 有 两 个 复 制 :

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

qt-embedded-linux-opensource-src-4.5.2-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-embeddedd 的 arm 库再次编译就可以得 到在 arm 上能运行的可执行程序。很明显,如果有开发板,第二步是可要可不要的(最好 是要) ,如果没有开发板的话,第三步也就没必要了,这样就不需要将 qt-embedded 编译成 适合 arm 架构的。

5.2 解压及编译触摸屏软件 tslib1.4.tar.gz A、安装编译过程需用到的程序

apt-get install autoconf(或 autoconf2.13) apt-get install automake apt-get install libtool B、配置编译

export CC=arm-linux-gcc ./autogen.sh

echo \

./configure --host=arm-linux --cache-file=arm-linux.cache -prefix=/usr/local/tslib

C、安装 make

make install 或

make install-strip //生成瘦身应用程序和库

在 PC 机/ usr/local/tslib/下生成触摸屏运行库。 打包

tar czvf tslib.tar.gz tslib

5.3 编译及安装 qt-embedded-linux-opensource-src-4.5.2-x86

进入/usr/local/qt/ qt-embedded-linux-opensource-src-4.5.2-x86 目录,进行编译安装。在终

端中进行如下操作:

cd /usr/local/qt/qt-embedded-linux-opensource-src-4.5.2-x86

./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-x86 -embedded x86 -qvfb -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb

make

make install

——OK!qt-embedded-x86 被安装在/usr/local/Trolltech/QtEmbedded-4.5.2-x86 下。

为运行qvfb还必须编译生成可执行文件qvfb

cd qt-x11-opensource-src-4.5.2/tools/qvfb/ make

mv qvfb /usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin/

5.4 编译及安装 qt-embedded-linux-opensource-src-4.5.2-arm

进入/usr/local/qt/qt-embedded-linux-opensource-src-4.5.2-arm 目录,进行编译安装。在终

端中进行如下操作:

cd /usr/local/qt/qt-embedded-linux-opensource-src-4.5.2-arm

./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-arm -embedded arm -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++ -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

注意上面的红色目录要跟你的 tslib 安装目录相同!! make (时间不是很长,半个小时这样)

make install (时间也不是很长,20多分钟吧)

——OK!qt-embedded-arm 被安装在/usr/local/Trolltech/QtEmbedded-4.5.2-arm 下. 注意:

1如果在配置指令./configure ......执行后,发生错误,可以进入到解压缩文件目录(如

/usr/local/qt/qt-embedded-linux-opensource-src-4.5.2-arm 目录),执行 make confclean 便可将

前面所有的配置都清除掉,然后再./configure。 2如果在编译的过程中出错,

在重新 make 前需要先执行 make clean, 然后再./configure,

再执行 make 的操作。

3在 make install 完后,可执行 make clean 将中间生成的许多.o 文件清楚,这些临时文

件要占很大一部分空间。

4如果使用的是软件包程序直接安装的 qt,以及 qvfb(没有进行相关配置) ,而不是使

用源代码安装。则运行 qte 测试程序时候会报错: Error opening framebuffer device /dev/fb0

QScreenLinuxFb::connect: No such file or directory

原因是 Qt-Embedded 在查找系统的显示设备时,默认去寻找 LinuxFb,也即 Linux 的

/dev/fb0 设备,但是如果 Qt- Embedded 安装了其它显示设备,比如 qvfb,则可以在 qvfb 上显 示,

但是需要一个插件(或者说驱动,

可能会和设备驱动混淆), Qt- Embedded 能使用 qvfb。 使

为了做到这一点,需要在编译 Qt-Embedded 时的 configure 命令加上如下选项 ./configure -plugin-gfx-qvfb -plugin-kbd-qvfb -plugin-mouse-qvfb 或 ./configure -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb

如果,你不想重新编译 Qt-Embedded,也可以单独编译 qvfb 的 gfxdrivers,命令如下 cd

/tmphrl/qt-embedded-linux-opensource-src-4.5.2-x86/src/plugins/gfxdrivers/qvfb/

/usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin/qmake sudo make install

然后运行测试程序,把/usr/local/Trolltech/Qt-4.5.2下的examples文件夹拷贝到/tmphrl目录下:

cp -r /usr/local/Trolltech/Qt-4.5.2/examples /tmphrl/examples 导入qt-embedded-x86的环境变量

source /usr/local/Trolltech/QtEmbedded-4.5.2-x86/setenv-x86.sh 运行测试程序

cd /tmphrl/examples/widgets/calculator/ ./calculator -qws

6 设置环境变量及各版本使用方法

至此我们已经安装好了 qt-x11 版,即在 PC 机上运行的 QT,qt-embedded-x86 版(x86 体

系的嵌入式板子上运行的 QT)和 qt-embedded-arm(arm 板子上运行的 QT)。下一步:设置环 境变量:

6.1 qt-x11 环境变量设置 vi setenv.sh 添加如下内容:

PATH=/usr/local/Trolltech/Qt-4.5.2/bin:$PATH

LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.5.2/lib:$LD_LIBRARY_PATH 保存退出,移到/usr/local/Trolltech/Qt-4.5.2 中。 (我一开始将环境变量添加到了/etc/profile文件中,可是后来发现,需要选择不同的编译环境,所以需要按着后面步骤来做)

6.2 qt-embedded-x86 环境变量设置 vi setenv-x86.sh

添加如下内容:

QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-x86

PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin:$PATH

LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/lib:$LD_LIBRARY_PATH

保存退出,移到/usr/local/Trolltech/QtEmbedded-4.5.2-x86 中。 6.3 qt-embedded-arm 环境变量设置 vi setenv-arm.sh 添加如下内容:

QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm

PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin:$PATH

LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib:$LD_LIBRARY_PATH

保存退出,移到/usr/local/Trolltech/QtEmbedded-4.5.2-arm 中。 6.4 各版本使用方法

我们在运行的时候分别运行对应的脚本即可,比如我们要用 qt-x11: cd /usr/local/Trolltech/Qt-4.5.2 source setenv.sh

然后就可以用 qmake designer 等工具了。 7 运行库移植到mini2440 板

7.1 在 mini2440 板上建立目录 在 mini 2440 板建立如下目录:

/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin /usr/local/tslib

把电脑端 /usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib下面所有的东西放到板子的 /usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib

7.4 复制触摸屏软件

复 制 PC 机 上 /usr/local/tslib/ 目 录 下 的 全 部 文 件 ( 含 子 目 录 ) 到 mini 2440 上 的 /usr/local/tslib 目录下

7.5 在开发板上建立环境变量

修改开发板上/etc/profile 文件,增加以下内容:

export QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm export QPEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm export TSLIB_ROOT=/usr/local/tslib export PATH=$QTDIR/bin:$PATH

export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_CALIBFILE=/etc/pointercal

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0 export QWS_DISPLAY=LinuxFb:/dev/fb0 export QWS_SIZE=320x240 export

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

7.6 使触摸屏生效

修改 mini2440 上/usr/local/tslib/etc/ts.conf 文件:把第二行# module_raw input 前面的#

和空格去除,保存退出。 7.7 校准触摸屏

触摸屏的前提是你的触摸屏驱动已经写好, 并加载进了内核。

你可以测试有没有加载触

摸屏驱动, /dev/input/event0(这只是我的板子上的触摸屏) , 点击触摸屏, cat /dev/input/event0 看终端有无显示,

若有则表明正确。重新启动开发板,执行: cd /

cd /usr/local/tslib/bin ./ts_calibrate 校准触摸屏 ./ts_test 测试触摸屏

如果正常,QT4 Embedded 移植成功! 8 mini2440 板开机自动运行自己的程序

本来是准备开机以后运行 qtopia 再运行自己的程序,但是本来能全屏运行的程序通过

rcS 自动运行后并不能全屏显示,qtopia 的任务栏仍然在。所以就决定不用 qtopia,直接在

目标板上运行程序。 首先按照 12.7.1、 12.7.2、

12.7.3 和 12.7.4 移植相应的运行库到开发板, 然后修改 mini2440

上 /dev/init.d/rcS 如下: (在/etc/init.d/下,作者写错了) 添加环境变量

export set HOME=/root

export set TSLIB_ROOT=/usr/local/tslib export set TSLIB_CONSOLEDEVICE=none

export set TSLIB_TSDEVICE=/dev/input/event0 export set TSLIB_FBDEVICE=/dev/fb0

export set TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export set TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export set TSLIB_CALIBFILE=/etc/pointercal

export set QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm export set QPEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm export set PATH=$QTDIR/bin:$PATH

export set QWS_MOUSE_PROTO=\ export set QWS_DISPLAY=LinuxFb:/dev/fb0 export set

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

将 rcS 文件中的最后 3 行: /bin/qtopia & echo \

\

echo \ 替换为:

$QPEDIR/bin/check -qws & echo \

\

echo \

(其实倒数第 3 行是启动代码了,最后两行只是在屏幕上显示一句话,不是重点目标。 )

将可执行程序 check 放在/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin 目录下, 开机将从 ,不启动 QTOPIA,触摸屏能用,成功。 自己的程序 check 启动($QPEDIR/bin/check -qws &) 注:&表示在后台运行 (如果你出现下面问题:

Couldnt load module input

No raw modules loaded. QWSTslibMouseHandlerPrivate: ts_config() failed with error: 'No such file or di' Please check your tslib installation!

我的解决方法是:重新输入一次export

TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts就可以解决触摸屏不能使用的问题 ) 总结:

这 里用到的Qt库与开发板Qtopia的库无关的(我尝试着把开发板/opt/Qtopia下的全部删除了也可以运行下载进去的程序),触摸屏也无关。所以 即使没有编译成功触摸屏的库,可以从开发板中复制过去即可。问题是一开始设计PC端QtEmbedded-...-arm的./configure中触摸 屏的路径必须与你现在要复制到开发板中的触摸屏的路径一样。同样我们要把已经编译安装了的QtEmbedded-...-arm的./configure 的Qt库路径,在开发板端模拟一个和PC一样的路径,然后把PC

端的lib复制过去就可以了。

意思就是开发板和PC端路径一样,只是开发板端只需要库而已,当然触摸屏得全要。

整个移植最需要注意的 地方就是设计QtEmbedded-...-arm的./configure那块了,其它就没什么了。

(到此移植部分结束)

本文来源:https://www.bwwdw.com/article/hacg.html

Top