Chinaunix首页 | 论坛 | 博客
  • 博客访问: 347128
  • 博文数量: 69
  • 博客积分: 3077
  • 博客等级: 中校
  • 技术积分: 602
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-11 09:40
个人简介

或以为孤权重,妄相忖度

文章分类

全部博文(69)

文章存档

2012年(1)

2011年(10)

2010年(39)

2009年(19)

我的朋友

分类: LINUX

2010-11-20 15:14:54

开发板:友善之臂 mini2440-128M
主机: VMware 6.5 + Fedora 9
开发版内核:Linux 2.6.29
交叉编译器:arm-linux-gcc-4.3.2
*******************首先移植 用于触摸屏矫正tslib1.4**********************************************
1. 解压下载的tslib1.4压缩包
  进入生成的目录,我的是~/tslib/
PS:svn工具获取源代码
# svn co svn://svn.berlios.de/tslib/trunk/tslib tslib /*获取tslib源代码*/
2.   执行./autogen.sh
3.   执行./configure --prefix=/opt/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
   经过一小段时间的编译,如果没出错就执行make install,我的已经安装到/opt/tslib
4.   修改/opt/tslib/etc/ts.conf,把第二行的#号去掉
5.   通过nfs将/opt/tslib通过nfs mount到板子上,或是下载/opt/tslib到板子的/opt/tslib (可以通过先挂载到板子上然后copy进去即可,注意一定也要copy到/opt/tslib下,这样保持和主机的一致)
6.   修改开发板的/etc/profile文件添加如下的内容:
export TSLIB_ROOT=/opt/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATH
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO='TSLIB:/dev/input/event0'
  注:红色部分可根据实际更改
 可以先手动执行以上的所有export命令,再运行板子的/opt/tslib/bin/ts_calibrate,进行第一次的校正
 
***********************qte 4.6.3的移植*****************************************
1. 从官网上下载qt-everywhere-opensource-src-4.6.3.tar.gz
  
2.解压到某个工作目录
3.运行config命令,说明:这里的config的参数可以根据自己的需要进行更改,具体的还要仔细查看相关资料,这里给出的是自己的配置,可以实现SQLite数据库 以及图片的显示等功能
../4.6.3/configure -prefix /opt -embedded arm -xplatform qws/linux-arm-g++ -no-qt3support -fast -no-largefile -qt-sql-sqlite -qt-mouse-tslib -I /opt/tslib/include -L /opt/tslib/lib -nomake tools -nomake demos -nomake examples
4. make进行编译
5. make install 进行安装,这里的默认安装到了-prefix 指定的/opt目录下。
6. tslib的路径必须正确,且目录也要求一致,否则运行QT程序会提示找不到tslib的库文件
7. 导出环境变量:
export QTDIR=/opt
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/lib/plugins:/usr/local/lib:$LD_LIBRARY
8.编译程序并测试
 进入qt自带的例子中这里选择的是计算器的例子 cd qt-4.6.2-arm/examples/widgets/calculator
# /opt/bin/qmake -project
# /opt/bin/qmake

# make
9.此时会生成二进制文件calculator,将其考到开发板上,输入如下命令即可运行,当然必须先导出环境变量
export TSLIB_TSDEVICE=/dev/input/event0
export LD_LIBRARY_PATH=/opt/tslib/lib:$LD_LIBRARY_PATH
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/opt/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/opt/tslib/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO='TSLIB:/dev/input/event0'
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.6.3-arm
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/lib/plugins:/usr/local/lib:$LD_LIBRARY
/calculator -qws
10. 此时就会看到开发板上的计算器了,说明移植成功了
如有疑问可以询问
 
附设置NFS的简单方法:
1.# gedit /etc/exports
  增加/opt/root_qtopia  *(rw,sync,no_root_squash)
2.# lokkit
  disable防火墙
3.系统-->管理-->服务 将nfs选为enable,并且启动它.
 
PS:
1.这篇写得比较好,最近一直在忙KNX/EIB,两三个月前移植过的结果还是忘记了,这会稍微空闲了一点,再复习一下移植过程.
2.还有一点就是关于指定交叉编译器的问题4.3.2,首先进入/opt/4.6.3/mkspecs/qws/linux-arm-g++
修改qmake.conf,以下是我自己的qmake.conf文件:
#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#
include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC                = arm-none-linux-gnueabi-gcc
QMAKE_CXX               = arm-none-linux-gnueabi-g++
QMAKE_LINK              = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
QMAKE_STRIP             = arm-none-linux-gnueabi-strip
load(qt_config)
 
2010-11-22->PS:
1.使用4.3.3交叉编译器出现以下错误:
../3rdparty/javascriptcore/JavaScriptCore/wtf/TCSystemAlloc.cpp: In function 'void* TrySbrk(size_t, size_t*, size_t)':
../3rdparty/javascriptcore/JavaScriptCore/wtf/TCSystemAlloc.cpp:126: error: 'sbrk' was not declared in this scope
make[1]: *** [obj/release/TCSystemAlloc.o] Error 1
make[1]: Leaving directory `/home/bakul/Qt/qt-everywhere-opensource-src-4.6.3/src/script'
make: *** [sub-script-make_default-ordered] Error 2

解决方法:
    到目录/usr/local/arm/4.3.3/arm-none-linux-gnueabi/libc/usr/include下打开unistd.h头文件,第996行注释的内容反注释,
extern void *sbrk (intptr_t __delta) __THROW;
后来又改成:
extern void *sbrk (size_t __delta) __THROW;
不知道为什么,把这个函数的引用的给注释掉了,希望高手解析一下。继续编译,再也没有这个错误提示。
 
2010-11-24:
1.用4.4.3交叉编译器编译QT4.6.3,更新文件系统下面的/lib[这一步很重要,因为不同的编译器需要不同的库,简直就是废话!命令:cp -rf 4.3.3/arm-none-linux-gnueabi/libc/armv4t/lib/*so* lib -a], 然后编译calculator例程.
2.NFS启动,运行calculator -qws ,提示缺少库,补全它....
  噢,NO!接着又提示:FATAL: kernel too old,无语....
3.转到/opt/4.6.3/examples/widgets/calculator
  #file calculator
  #calculator: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped
 
4.改天移植个2.6.34内核看看了,唉,真折腾.其实移植这个版本的QT目的就是为了好好学学QT对硬件的驱动的,因为近期可能有项目需求!
 
5.以前写过的:
Antony
PS:你一定会发现这么多版本的qmake引用起来非常不方便,其实只要做个简单的一个命令就可以让这种烦恼不再!
[root@localhost /]# cd /usr/local/Trolltech/qte4.6.3-arm/bin
[root@localhost bin]# ln -s qmake qmake-qte
[root@localhost bin]# qmake-qte -v
QMake version 2.01a
Using Qt version 4.6.3 in /usr/local/Trolltech/qte4.6.3-arm/lib
[root@localhost bin]# 
将路径/usr/local/Trolltech/qte4.6.3-arm/bin添加到.bashrc中,手动生成Makefile时就可以直接使用qmake-qte了。其他类似。
 
6.一个GUI的思路:当你准备实现一个GUI时,你可以将当前窗口设置为全屏显示,那么这个程序将会一直运行,无法被用户关闭,直到断电或程序崩溃....
    ui->setupUi(this);
    this->showFullScreen();//加入这句即可
阅读(4646) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~