QT学习系列-----5 --Qt 4.8.5的移植

今天解决了移植的问题。今晚晚上剩余时间再次做个总结。这几天的时间绕的比较多。。。。。。

Qt4.8.5是Qt4的最新也是最后的版本。在往后就是Qt5了。 我还是从Qt4入手,资料比较齐全。。。

 现在的Qt4版本都只有一个文件,qt-everywhere-opensource.tar.gz。。。这一个文件可以通过不同的工具链编译成基于不同平台的Qt版本。这个版本要弄清楚。

 而在Qt4.5.3中,是会分为embedded版本和X11版本。如果先看到这个版本,可能会有点犯糊涂,但是之后都是放到了一个文件中。

                   Host : Ubuntu 12.10

                   ## FS   :

                    ToolChain: arm-linux-gcc 4.4.3

                     Board : Forlinx OK6410 256MB nand flash,128MB DRAM

由于我已经安装完成,明天会继续编写基于ARM的Qt程序。

下载Qt4.8.5后,更改工具链,在./configure中设置,就基本上可以编译通过的。中间出现问题,可以Google。我中间也出现了很多的问题。其中一个问题就是利用的工具链是arm-linux-gcc 4.3.2的版本的时候是编译通不过的。具体我没有进行解决。只好换成了4.4.3.网上一般是有现成的工具,友善之臂制作好的工具链,可以直接拿来使用。

同时要编译一个PC版本的Qt,从而好实现交叉编译是程序的编写。。。此时参数无需进行太多的设置。

======================================================================================================

Qt的交叉编译一般不会有太大的问题。Qt4.8.5也是一个很稳定的版本,所以可以作为一个很好的选择。。。

移植的时候,刚开始我并没有自己制作文件系统。而是直接使用的飞凌的文件系统。在/opt目录下新建qt-4.8.5目录。如果用NFS进行挂载使用的时候,我发现我的NFS会反映很慢。反而会不方便进行调试。所以我利用mkyaffs2image-nand256(飞凌提供,可以自己制作。但是制作的时候应该注意。在mkyaffs2image.c中对chunksize,spareSize,pageperblock进行设置,具体设置要根据nand flash芯片手册上给出的数据进行。参考链接为: http://blog.chinaunix.net/uid-26563605-id-3171231.html) 进行文件系统的制作。

发现问题如下:

1  .   制作后发现文件系统的大小是170多M。此时我认为这个大小是可以接受的。因为我的NAND是256M的。完全可以。但是每次进行烧写的时候会发现,飞凌的SD卡的引导程序在reading rootfs.yaffs2的时候就会卡住,并且终端通过lcd时会产生花屏。。。。。  

    这个问题我迷惑了一天。对文件系统的各种猜测与更改。到最后我才怀疑到文件系统的大小问题。。。可能太大了。最好我删了/opt下面的其他的Qt版本,如Qtopia2.2.0和4.4.3.并且对4.8.5中的一些文件,如demo,example进行了删减。减到100M的时候发现最后终于可以没有出现花屏了。。。。

2  .  QFontDatabase: Can not find font directory; 这个问题很好解决。网上有相应的解决办法。我的办法是在rcS文件中加上一句:

                                     export QT_QWS_FONTDIR=/opt/qt-4.8.5/lib/fonts

3.  GLIBC_2.9 not found。这个问题我郁闷了半天。。。。网上有说重新换工具链。但是我觉得不是这个问题。。。glibc是C函数库。通过strings libc.so | grep GLIBC_

   可以找到库文件的一些关于版本的信息。。。 在一篇文章中,我获得了启发。。。http://blog.csdn.net/mybelief321/article/details/10068293

  原来,我用的是飞凌制作的文件系统,他用的交叉工具链跟我的不是一个版本,从而导致了其中与工具链匹配的库文件也是不相互兼容的。所以我要做的不是更换工具链。而是直接更换文件即可。其实这个问题的解决的周期是很长的。我甚至想重新进行编译或者自己制作一个文件系统。在自己制作文件系统的过程中,发现了/lib库是如何得到的。只要了解到板子上的/lib库文件是如何得到的,其实解决问题的方法就知道了。。。至少知道问题出在哪了!!!

   我删掉了飞凌给的文件系统中的/lib下的所有库文件。将/usr/local/arm/4.4.3/arm-none-linux-gnueabi/lib下,把库文件拷贝到文件系统中的/lib目录下,就解决了这个问题。也不需要自己重新制作文件系统了。。。当然如果为了学习,自己进行一次文件系统的制作还是很有必要的。

=====================================================================================================

后记  :  至于为什么要选择qt4.8.5的版本,其实主要是因为qtopia2.2.0中,没有解决qwt插件的问题。不知道是谁不支持谁。可能也是由于qtopia过于陈旧。。。qt4.8.5界面比较好,但是实验几次后,发现反映有点慢。不知为何故,不知道是否可以提高速度。只要留下需要的部分,其余的都可以剔除。。。。。。

原文地址:https://www.cnblogs.com/zxqwolf/p/3599380.html