打通一条前进的道路

最近我放下我想要的自习生活,一心最想做到的就是怎么才能打通一条通往顺利的道路:让ARM板子带有触摸屏驱动的启动内核引导到跟文件系统,接着启动Qt4运行环境,最后启动我自己制作的Qt应用程序!

此时此刻我做到了!中间的过程就不用提了,你懂的,悲剧一个接着一个!为了不让和我一样学习ARM的同胞受到无法忍受的煎熬,我就陈述一下这里具体的细节!

注:所有运行的环境在ubuntu11.10中测试!其他环境类似….(window容易蓝屏,配置困难!)

操作步骤

说起来很简单,我就简单的归纳为六步骤:

  1. 用配套光盘中的源码编译出带有有关驱动的内核,保留待用…
  2. 用配套光盘中的源码做出根文件系统,其中包含有Qt4的运行环境
  3. 修改/dev/init.d/rcS文件最后一句话为:/bin/qt4 & echo “starting Qt4, Please waiting……”
  4. 修改/bin/qt4文件最后两句话为:
    cd (应用程序所在路径)
    ./应用程序名字
    
  5. 用专门的工具打包上述制作的根文件系统,保留待用…
  6. 此步只是简单的把上述制作的系统内核和根文件系统烧录即可

这个原理我们在上学期就已经猜的差不多,本学期开始也是炮哥最先验证这个真理!

经验教训

所有源码采用光盘中的!

因为软件是有很强版本限制的,只会向前兼容,不会预知性的向后兼容,而且光盘中的源码都是经过公司测试过的,基本不存在版本问题!

例:不明就里的我就是花了两三天的时间编译了qt4.5的x11, x86, arm三个版本(后面说三者的区别),编译完成后测试不能用,怀疑这,怀疑那,始终不行!后来才发现ARM板子根文件系统中的Qt4的版本是4.6.3…无语!最有可能的就是版本的问题了…

尽量保持单一变量!

单一变量的优势你懂的,出了问题变量兜着,用到这里就是采用光盘中确定能用的内核,根文件系统等

编译是个问题

据我的测试,(mini2440)光盘中qte有个问题导致在ubuntu中始终编译不通过!或许它用Fedora9我用ubuntu11.10的原因。

编译qte编译环境时,光盘中configure参数如下:

1
#echo yes | ./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse -linuxtp

其出现tslib找不到的错误,tslib为触摸屏驱动的支持库,所以哦编译安装了tslib,其中的曲折也是如此,但还是成功了,后来发现,还是无法驱除这个错误,修改后的configure参数如下:

1
./configure -arch arm -embedded arm -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib

该删的都删了,出乎意外的通过了!

查资料的能力很重要!

编译的过程会出现各种意外的错误,这样就需要你不断的查阅资料来了解解决问题的方法。

X11, X86, ARM三个版本的区别

Qt4.5(包括4.5)源码分为两个版本:X11, embedded!X11是获得X11的源码,embedded是获得X86和ARM的源码!而Qt4.6后起名为everywhere(可见诺基亚的雄心壮志),也就是一个源代码可以编译出三种程序,只是编译的时候配置不同!

  1. 使用everywhere提供的源码和开发工具开发出Qt应用程序
    编译只是得到很多开发工具,如:designer,qvfb等
  2. 使用everywhere关于x86和工具再次编译我们开发的Qt应用程序
    编译只是方便我们测试Qt应用程序在ARM上的运行效果,但该编译结果并不能在ARM上运行,只能在qvfb上运行,但和在ARM上运行的效果差不多(目前遇到有不一样,毕竟ARM的速度和I3没法比)!
  3. 使用everywhere的arm源码再次编译
    编译是为了得到可以在ARM上运行的Qt应用程序。

这里就要注意一点:其实2中编译的x86的Qt应用程序也属于嵌入式的范围!
如果有开发板,2可以省略,因为2只是对开发板的一种模拟!(更其实,没有开发板的话,3可以省略)

Brick wechat
扫一扫,用手机看更方便(^ ◕ᴥ◕ ^)