当前位置: 代码迷 >> 综合 >> [转]mini2440 qt4 移植
  详细解决方案

[转]mini2440 qt4 移植

热度:49   发布时间:2023-12-15 01:22:00.0

 原文地址找不到了 由于mini2440的光盘里自带一个root_default.tgz根文件,因此省了很大一部分力气自己去裁剪,但是也有很大的缺陷就是:本身就对内核不熟悉,现在跳过了这一步,就更加不理解了。以后还是要补上来。

我做的时候现在fc8下试过,第一次是配置的时候“The tslib functionality test failed!”错误

但是不明白原因的,我是按照下面的配置来的还是出问题了

去掉后根据./configure -h 的提示配置完成,gmake到某处时,错误中断。试了几次都是这样

也许是我的fc8并非完全安装吧。最后换到了亲爱的RH9.0下,按照下面的指示编译成功。不过还有个现象就是在fc8下安装qt-x11可以成功,RH9.0下安装qt-x11就失败了。可能是GCC版本的问题了。在RH9.0下我用的是tslib-1.3

1.编译tslib-1.4 (这部分很好ts-lib的编译还算顺利了)

     解压到/home下

    #./autogen.sh
    #./configure --prefix=/home/duancp/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes (可以先生成个cache文件)

    #make

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

2.安装arm-linux-gcc-3.4.1.tar.bz2

    在根目录下解压,解压后的默认目录在/usr/local/arm/3.4.1

    设置环境变量,运行命令:

    vi /etc/profile

    加入 export PATH=/usr/local/arm/3.4.1/bin:$PATH

3.编译qt-embedded-linux-opensource-src-4.4.3.tar.gz

tar zxf qt-embedded-linux-opensource-src-4.4.3.tar.gz
cd qt-embedded-linux-opensource-src-4.4.3

(我的QT的安装目录设置为根目录下的/minin2440)

./configure -prefix /mini2440  -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb -confirm-license -qt-mouse-tslib -I/home/duancp/mytslib/include -L/home/duancp/mytslib/lib

上面的红色部分必须让找前面的tslib的目录设置,否则会出现“The tslib functionality test failed!”错误

./make

make install

cd example/qws/mousecalibtration

qmake &&make (生成mousecalibtration可执行文件,后面需要将其拷贝到根文件中)

这一步实现时有问题,可能是环境变量没设置好
4.制作根文件

我的工作目录是在根文件下,首先将root_default.tgz拷贝到根目录下,加压,生成root_default

cd /root/root_default

mkdir tslib

cd tslib

为了方便,将编译的tslib下的bin、etc、lib文件夹全部拷贝过来 拷贝tslib支持库,我自己的理解了)

cp -a /home/duancp/mytslib/lib ./

cp -a /home/duancp/mytslib/bin ./

cp -a /home/duancp/mytslib/etc ./

cd etc

vi ts.conf据说是ts.conf的大小有限制,所以必须裁剪,是具体情况而裁剪

将里面的第二条语句(#module_raw inout)前面的“#”去掉,否则后面触摸屏将不能使用

cd ..

mkdir mini2440 (这里将mini2440作为了qpe目录,实现GUI程序

cd mini2440

因为我的flash有64M,为了方便,将QT4.4.3的lib文件夹全部拷贝过来,但是要删除fonts内除了wenquanyi_120_50.qpf 之外的其他文件,否则太大

cp -a /mini2440/lib ./

rm -rf fonts

mkdir fonts

cp -a /mini2440/lib/fonts/wenquanyi_120_50.qpf fonts

 

将前面编译的QT的触摸屏自带程序拷贝过来

cp -a /*/example/qws/mousecalibtration/mousecalibtration ./

cd /root

解压mkyaffsimage.tgz,得到mkyaffsimage可执行文件

./mkyaffsimage root_default root.yaff2

得到根文件root.yaff2,如果要看一下大小,可以执行

ll root.yaff2 -h

这样可以将root.yaff2烧到板子上去了。

在板子上运行mousecalibtration的时候没有出现什么错误,可以正确的显示输入的汉字

目前在板子上运行的时候存在一定的问题:进入tslib运行ts_calibrate,总是提示ts_open: No such file or directory,这个问题一直没有解决,留在后面解决。

在板子上运行的时候环境变量如下:设置环境变量

export QTDIR=/mini2440
export LD_LIBRARY_PATH=$QTDIR/lib:$OPIEDIR/lib
export PATH=$QTDIR/lib:$OPIEDIR/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export TSLIB_ROOT=/tslib
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONFFILE=/tslib/etc/ts.conf
export TSLIB_FBDEVICE='/dev/fb0'
export QWS_KEYBOARD='LIRC:/dev/lircd'

  将上面的配置写成个脚本文件,开机时在初始化中开启就行了。

或者直接写到/etc/profile 里面就可以实现开机启动设置变量了。

要是在板子上运行的时候提示缺少某些文件的时候,就去在PC机上的linux下寻找,需要主要的是看若是提示缺少的文件是以个链接文件时,需要把链接对象也拷入

我在运行的时候缺少一个librt.so.1(具体记不得了,好像是这个)的文件,我的办法是把/usr/local/arm/3.4.1/arm-linux/lib下的该文件和其链接对象拷贝过来放在板子里的lib中,就ok了!