qt4.8安装arm linux,移植qt-4.8.5至 mini2440建立交叉编译及qt运行环境

移植参考了网上流传的许多相关文档,感谢。

软硬件环境: ubuntu10.04 32bit          arm-linux-gcc-4.4.3          mini2440

1  下载tslib-1.4.tar.gz 触摸屏库文件包

解压: tar -xvzf tslib-1.4.tar.gz

进入解压后得到的tslib文件夹: cd tslib

配置: ./configure --prefix=/opt/tslib/  --host=arm-linux  ac_cv_func_malloc_0_nonull=yes

arm-linux-gcc编译tslib安装在/opt/tslib下: make&&make install

2. 下载Qt libraries 4.8.5 for embedded Linux (230 MB)(Info)

解压: tar xvzf qt-everywhere-opensource-src-4.8.5.tar.gz 我将解压后的文件夹重命名为:qt-4.8.5-arm

cd qt-4.8.5-arm

./configure

可以看到许多配置qt功能及特征的选项,参考别人的配置,配置如下:

./configure -prefix /usr/local/Trolltech/Qt-4.8.5-arm -release -shared -fast -opensource -no-3dnow -no-openssl -no-libmng -no-opengl -no-qvfb -no-glib -no-phonon  -nomake examples -nomake tools -nomake docs -nomake demos -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-mouse-tslib -xplatform qws/linux-arm-g++ -embedded arm -little-endian -depths 16 -confirm-license -I/opt/tslib/include -L/opt/tslib/lib

其中-no-xxx表示配置qt不支持xxx, 而-qt-xxx表示qt支持xxx, 这里制定了qt的安装路径/usr/local/Trolltech/Qt-4.8.5-arm, qt目标架构arm,编译平台linux-arm-g++,那个qws我不清楚其意义,记得要配置qt支持触屏:-qt-mouse-tslib,指定tslib的头文件路径:I/opt/tslib/include 和链接库路径-L/opt/tslib/lib即第1步安装的tslib

make

这里编译花了不少时间,且最开始未能成功,因那次我下载编译的是Qt libraries 4.8.5 for Linux/X11 (230 MB)(Info),而不是qt嵌入式linux库,我有意试一下,发现前一种不行。

make install

将qt库安装到/usr/local/Trolltech/Qt-4.8.5

3.把以上arm-linux-gcc编译的库拷贝到开发板系统的根文件系统下,pc上开发板的根文件系统路径是/nfsroot

mkdir /nfsroot/opt/tslib

cp /opt/tslib/*  /nfsroot/opt/tslib/

mkdir /nfsroot/usr/local/Trolltech/ -p

tar czvf Qt-4.8.5.tar.gz  Qt-4.8.5-arm

在/usr/local/Trolltech下,我把pc下安装的qt库打包到/nfsroot/usr/local/Trolltech,即mini2440的根文件系统中,解压

tar xvzf Qt-4.8.5.tar.gz

得Qt-4.8.5-arm

4.在/nfsroot/etc/下建立 profile 制定qt和tslib运行的环境

vim profile

内容如下 :

#!bin/sh

export TSLIB_ROOT=/opt/tslib

exprot TSLIB_TSDEVICE=/dev/event0

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CALIBFILE=/etc/pointeral

export TSLIB_FBDEVICE=/dev/fb0

export QWS_MOUSE_PROTO=tslib:/dev/event0

export QWS_SIZE=320*240

export QTDIR=/usr/local/Trolltech/Qt-4.8.5-arm

export QT_QWS_FONTDIR=$QTDIR/lib/fonts

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

以上的配置需根据自己的情况来,根文件系统中tslib,qt的安装目录,触摸屏,LCD在 /dev下的表示,窗口size,

修改tslib的配置文件ts.conf

vim ts.conf

module_raw input

将上面这条配置前的#去掉使之生效,让tslib可以用linux中input上报事件的接口

module pthres pmin=1

pthres为tslib提供触摸屏灵敏度门槛插件

module variance delta=30

variance为tslib提供触摸屏滤波算法插件

module dejitter delta=100

dejitter为tslib提供去噪算法插件 module linear// linear为tslib提供坐标变换插件

5.打开SecureCRT,启动mini2440,挂载根文件系统后,在mini2440系统终端测试

cd /opt/tslib/bin

进入tslib在根文件系统中的安装目录下的bin文件夹

./ts_calibrate

首先运行ts_calibrate校准屏幕

./ts_test

运行测试

在运行tslib/bin下的程序时出错,看报错:errorwhileloadingsharedlibraries:libdl.so.2: cannot opensharedobject file: No such file

是在指定的库路径下找不到libdl.so.2库, 在网上发现一个方法,到交叉编译工具链的库文件夹去找找

cd  /usr/local/arm/4.4.3

find ./ -name libdl.s0.2

./arm-none-linux-gnueabi/sys-root/lib/libdl.so.2

cd arm-none-linux-gnueabi/sys-root/lib/

cp libdl.so.2  /nfsroot/usr/local/Trolltech/Qt-4.8.5-arm/lib/

把该库文件拷到根文件系统qt的库文件夹下吧

6.pc交叉编译几个qt程序例子,拷入根文件系统,在板子上运行

cd /usr/local/Trolltech

进入qt在pc上的安装目录

vim setenv-embedded.sh

#!bash shell

PATH=/usr/local/Trolltech/Qt-4.8.5-arm/bin:$PATH

QTDIR=/usr/local/Trolltech/Qt-4.8.5-arm

MAINPATH=$QTDIR/man:$MAINPATH

LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

pc上安装了qt库,通过上面的脚本为qt应用程序在pc上的编译配置环境,如告知链接qt库的路径

cd /opt/qt-4.8.5-arm

进入pc上qt包解压后得到的qt源码包文件夹

cd examples/mainwindows/application

进入qt源码包提供的主窗口例子下的application目录

qmake

生成Makefile

make

编译得到application

cp application /nfsroot/usr/test

将application拷贝至根文件系统/nfsroot/usr/test/下

启动mini2440,在其终端进入/usr/test目录,运行application

./application -qws

若运行出错说缺少xxx库文件,到交叉编译工具链下的arm-none-linux-gnueabi/sys-root/lib/目录下找到该库文件,将其拷贝至根文件系统         中/usr/local/lib/目录下。之前在根文件系统/etc/profile中配置mini2440下qt程序运行环境时指定了库文件的目录,包括/usr/local/lib。

7.实现在启动mini2440进入系统后屏幕校准

cp /nfsroot/opt/tslib/bin/ts_calibrate /nfsroot/usr/bin/

将校准程序ts_calibrate拷贝至标准执行库

chmod 777 /nfsroot/usr/bin/ts_calibrate

vim nfsroot/etc/profile

系统启动会执行/etc/profile中指定行为,在最后一行添加ts_calibrate

如有误,望指正。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值