QT-4.5.1移植

 

 

 

源文来自http://zhilong2382.blog.163.com/blog/static/74804221200975102323374/

 

时间够快吧?一转眼放假已两个星期了,其实真的不习惯,总想回去吃好睡好,咋都不用做,

那不是很爽...但是..但是革命尚未完成....呵呵,,,这几天都在搞移植,linux这东西还真不好搞,

往往一个知识点让你搞上几天,这不,刚弄回的升级版mini2440,用最新的Linux-2.6.29和arm-linux-gcc 4.3.2 ,这个编译器支持EBAI接口,EBAI使得程序接口更加透明,这是一种趋势,虽然是比较新的,但这可害死我了,刚好我移植QtE-4.5.1到上面却不能跑,出现Segmentation fault 段错误,在网上搜了一下,很多人也是遇到和我一样的问题,没办法,只能想到用旧的mini2440的2.6.13内核和文件系统移上去,现在才知到内核和文件系统制非简单,yaffs2搞得我精皮力尽,老出现这几个错误:

-EBAI+2.6.13的yaffs2、yaffs2rc
Warning: unable to open an initial console.
Failed to execute /linuxrc.  Attempting defaults...


-EBAI+3.4.1原yaffs2
Failed to execute /linuxrc.  Attempting defaults...
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.


原内核+3.4.1原yaffse
Failed to execute /linuxrc.  Attempting defaults...
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.


2.6.13内核+4.3.2原yaffs2
VFS: Mounted root (yaffs filesystem).
mount_devfs_fs(): unable to mount devfs, err: -2
Freeing init memory: 144K
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.


2.6.13内核+2.6.13原yaffs2
VFS: Mounted root (yaffs filesystem).
Mounted devfs on /dev
Freeing init memory: 144K
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.
这是我分别编译出现的错误,虽然现在还不懂,不过还是让我了解了很多知识,唉,慢慢来,下面总结一下QtE4.5.1的移植,带触摸屏的。

目标板:飞凌公司的OK2440-III

PC ubuntu 8.04

 

这是qte4.5.1+tslib-1.4(编程之道光盘中的tslib-1.4)的配置文件和环境变量的设置,可实现触摸屏操作,并开机自动运行previewer,下面是整个过程:
一、编译tslib-1.4
我用交叉编译器为3.3.2,用3.4.1时出错,请先把交叉编译器安装好!
tar xvf tslib-1.4.tar
cd tslib-1.0
export CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc
export CXX=/usr/local/arm/3.3.2/bin/arm-linux-g++

./autogen.sh
export PATH=/usr/local/arm/3.3.2/bin:$PATH

echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache

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

make
make install
可能要先安装一些工具,如:libtool、automake等,反正提示少什么就安装什么,用apt-get install安装.

二、编译qt-embedded-linux-opensource-src-4.5.1.tar.gz

关闭终端,再重新打开,
注意这时用的是cross-3.4.1版,

export PATH=/usr/local/arm/3.4.1/bin:$PATH
这些环境变量都是暂时的。

tar xzvf qt-embedded-linux-opensource-src-4.5.1.tar.gz
cd qt-embedded-linux-opensource-src-4.5.1

./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.1-arm -embedded arm -little-endian -xplatform qws/linux-arm-g++ -nomake docs -xplatform qws/linux-arm-g++ -qt-mouse-tslib -I /usr/local/tslib14/include -L /usr/local/tslib14/lib

make
make install
这样就编译好了,
如果make的时候出现找不zlib.h,请装这堆东西 sudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev
下面进行移植!其实移植很简单,原来QtE-4.5.1在PC机的什么位置,你移到ARM时也放在什么位置即可,这样可以少设置很多环境变量,下面开始:
把目标板的/usr全部删了,

把PC端的/usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib拷到板的usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib下,
由于我的是128M,所以大点不要紧,你也可以只移植这几个库:libQtGui.so.4 、libQtNetwork.so.4 、libQtCore.so.4 。

把PC的/usr/local/arm/3.4.1/arm-linux/lib的libs++.so.6和librt-2.3.2.so复制到usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib,并创建链接文件:
ln -s librt-2.3.2.so librt.so
ln -s librt-2.3.2.so librt.so.1

 

把tslib14移到/usr/local下,

 

建个qtopia用于放应用程序;

然后设置一下环境变量和配置文件:
1、修改/etc/profile文件,
#!/bin/sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/tslib14/lib
export TSLIB_TSDEVICE=/dev/touchscreen/0raw
export TSLIB_CONSOLEDEVICE=none
export QWS_MOUSE_PROTO=Tslib:/dev/touchscreen/0raw

2、修改/etc/init.d/rcS文件,
#!/bin/sh
/bin/mount -a
/sbin/ifconfig eth0 192.168.0.15 up

/bin/mknod /dev/can c 98 0

/bin/ln -s /dev/sound/dsp /dev/dsp

/bin/ln -s /dev/fb/0 /dev/fb0

exec /usr/rc.autostart

3、修改/usr/local/tslib14/etc/ts.conf
module_raw h3600
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear


4、创建/usr/rc.autostart文件,
#!/bin/sh
#export QTDIR=/usr
#export QPEDIR=/usr/qtopia
#export LD_LIBRARY_PATH=usr/local/tslib14/lib:
#export HOME=/usr
#export TSLIB_TSDEVICE=/dev/touchscreen/0raw
#export TSLIB_CONSOLEDEVICE=none
#export QWS_MOUSE_PROTO=Tslib:/dev/touchscreen/0raw

cd /usr/qtopia
./previewer -qws &    (开机后自动在后台运行)


注:第一次先进行5点校正,进入/usr/local/tslib14/bin
./ts_calibrate依次点5个点就OK!
previewer是qte的一个自带例子,运行后可以在触摸屏操作了。
下面是一些环境设置,可作参考:
export TSLIB_TSDEVICE=/dev/touchscreen/0raw
 export TSLIB_FBDEVICE=/dev/fb0
 export TSLIB_PLUGINDIR=/usr/local/tslib14/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/usr/local/tslib14/etc/ts.conf
 export TSLIB_CALIBFILE=/etc/pointercal

export QWS_DISPLAY=LinuxFb:mmWidth35:mmHeight45:0
 export QWS_SIZE=320x240
 export QWS_MOUSE_PROTO=Tslib:/dev/touchscreen/0raw
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/tslib14/lib:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值