原文地址找不到了 由于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了!