Qtopia开发及应用平台的搭建

 
Qtopia开发及应用平台的搭建
       Qtopia开发平台主要指宿主机上带X Windows的Linux系统中的Qtopia开发环境,包括Qt designer,uic,tmake,qvfb,Qt/E库和qpe等。
       Qtopia应用平台则指基于ARM或其他嵌入式处理器的嵌入式Linux系统。
 
       因此,搭建不同的平台,虽然用到了相同的软件包,但在过程中使用的是不同编译器和编译参数,得到的是针对不同处理器的库文件和可执行文件以及工具。具体可以参考和对比《Build Qtopia for x86》和《Build Qtopia for arm》。因而要分别搭建两套Qtopia平台。
      
例如,如果在Build Qtopia for x86时,出现错误:
/usr/bin/ld: skipping incompatible /qte_x86/qtopia-1.7.0/lib /libqpe.so when searching for –lqpe
/usr/bin/ld: cannot find –lqpe
不细心的话只看到找不到libqpe.so,但是经检查发现/qte_x86/qtopia-1.7.0/lib有此文件,又认为不在链接路径内,加入链接路径,还是出现同样错误。其实仔细注意上面一行,已经提示说在搜索libqpe.so时跳过了/qte_x86/qtopia-1.7.0/lib下的不兼容的libqpe.so文件。因此根本问题在于不兼容,而不是不存在,或者说是不存在可用格式的libqpe.so文件。可用file命令检查文件信息:
# file ../lib/libqpe.so
ELF 32-bit LSB shared object, ARM, version 1(ARM), not stripped.
显然是在之前的操作中错误选择了不合适的编译器和编译参数,生成了不兼容的库文件所导致。
因此,在说库文件找不到或不可用时,除了要检查文件是否存在以及是否在可用的链接路径下时,还要注意检查兼容性,比如针对的处理器,ELF还是BSD,.so(共享库)还是.a(静态库)。
 
再比如,搭建好这两个平台后,可以用file指令查看所生成工具的属性。下面是查看Qtopia for arm的qpe的结果:
# file qpe
qpe: ELF 32-bit LSB executable, ARM, version 1(ARM), for GNU/Linux 2.0.0. dynamically linked(uses shared libs), not stripped.
若查看Qtopia for x86,则结果中相应部分为Intel 80386,version 1(SYSV).
 
下面引用了 bucketxp在论坛中的发言
一般编译 qtopia ,需要三样东西,在宿主机运行的 uic 指令,目标机的 libqte 库,还有 qtopia 源码。 不管你的目标机是 arm 还是 x86 ,首先你要生成一个 uic 指令,这个 uic 指令是随 Qt/Embedded 源码附带,在 tools 里。而要生成这个 uic 指令,你首先要有一套在主机运行的 libqte 库。而生成这个 libqte 的时候不能加 -qconfig qpe ,这也就是你当初为什么加了 -qconfig qpe 出错的原因。 有了 uic ,第二步是编译一个在目标机上 libqte 库,这个时候如果你要用它来生成之后的 qtopia ,编译的时候必须加上 -qconfig qpe ,这就是你为什么加了 -qconfig qpe 会出错的原因。实际上完整编译一个 qtopia 的库应该有三个目录:
qte-2.3.10-host (就为了生成 uic
qte-2.3.10-target (生成为 Qtopia 所用的 libqte
qtoipa-free-2.1.1 (生成 Qtopia
你出错的原因在于,虽然你 host target 都是 x86 但是,任需要有两个版本的 Qt/Embedded  
 
sunshinezss libqassistantclient.la 是在 make tools 的时候生成的,应该在 $QTDIR/lib 目录中,你看看有没有。如果没有,说明你在 make tools 的时候有什么问题,或者没有走 make tools 这一步。 qt-2.x 有的版本会出现这个问题,在 make 中没有包含 make tools 这个阶段。
你可先 make tools 一下,再去 make example ,试试看。
如果按照 lao_la 的方法复制了 qconfig-qpe.h ,你在 configure 配置的时候加上 -qconfig qpe 就可以用这个配置文件来配置你的 Qt/Embedded
不过,这个配置文件是当你要用 Qt/Embedded 来生成 Qtopia 的时候才用的,他会禁止 Qt/Embedded 的许多功能和属性来使其具有更高的性能来运行 Qtopia ,所以你使用了这个配置文件后,你会发现许多的 example 都编译不过去,因为它们所需要的功能并没有包含在你用 qconfig-qpe.h 生成的 Qt/Embedded 的库里。
 
平台搭建好之后,则进入Qtopia应用程序的开发的学习和研究阶段。具体内容可见〈Qtopia应用程序的开发〉。
 
另外,在搭建平台过程中,还有许多没有弄明白的问题。例如在搭建过程中各个软件包之间的依赖关系,那些步骤链接了哪些库,e2fsprogs到底是什么?-no-xft又是什么?tmake在哪些环节起了作用?如何看懂make过程中显示的信息?Makefile的进一步学习和研究,等等。希望在以后能有机会推出〈Qtopia平台搭建深入探讨〉一文
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值