标题:Qtopia开发及应用平台的搭建
作者:keisuo
日期:2007-05-28 10:45
内容:
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指 ..