• 6898阅读
  • 6回复

【提问】有关qt程序在x11上开发好后,如何转到arm平台 [复制链接]

上一主题 下一主题
离线pmingj
 

只看楼主 倒序阅读 楼主  发表于: 2005-11-10
我使用的系统是ret hat 9, qt版本是qt-x11-free-3.3.2 , qte版本是是qt-2.3.7。
现在我在xwindows下使用qt-x11-free-3.3.2的designer,设计好了一个图形界面,其目录下有以下文件:
[aaa@localhost metric]$ ls
form1.ui form1.ui.h main.cpp metirc.pro
运行:
[aaa@localhost metric]qmake -o Makefile metirc.pro
[aaa@localhost metric]make
后就生成了 metirc :
[aaa@localhost metric]$ ls
form1.ui form1.ui.h main.cpp Makefile metirc metirc.pro
运行metirc:
[aaa@localhost metric]$ ./metric
就可以在xwindows下正常运行该程序。

接下来我要把该程序编译成arm的运行代码:

在.bashrc上修改了我的环境变量为QTE的环境:
PATH=$PATH:~/tmake-1.13/bin:/usr/local/arm/2.95.3/bin
#================================================================
QTDIR=~/qt-2.3.7
LD_LIBRARY_PATH=~/qt-2.3.7/lib:$LD_LIBRARY_PATH
TMAKEPATH=~/tmake-1.13/lib/qws/linux-arm-g++
#-------------------------------------------------------------------
#QTDIR=~/qt-x11-free-3.3.2
#LD_LIBRARY_PATH=~/qt-x11-free-3.3.2/lib:$LD_LIBRARY_PATH
#TMAKEPATH=~/tmake-1.13/lib/linux-g++
#================================================================

export QTDIR TMAKEPATH PATH LD_LIBRARY_PATH

重新登陆后回到原来的工程目录,执行:
[aaa@localhost metric]$ tmake -o Makefile metric.pro
就会出现:
tmake error: metirc.pro:2: Syntax error
metric.pro 是qt-x11-free-3.3.2的designer生成的,其内容:

SOURCES += main.cpp
unix {
UI_DIR = .ui
MOC_DIR = .moc
OBJECTS_DIR = .obj
}
FORMS   = form1.ui
TEMPLATE     =app
CONFIG += qt warn_on release
LANGUAGE     = C++

如果删掉designer生成的metric.pro,使用qmake -project来生成metric.pro的话:
[aaa@localhost metric]$ qmake -project
[aaa@localhost metric]$ tmake -o Makefile metric.pro

就可以生成Makefile,可是执行make生成arm的执行代码就会失败:

[aaa@localhost metric]$ make
/home/pmingj/qt-2.3.7/bin/uic form1.ui -o ./form1.h
/home/pmingj/qt-2.3.7/bin/uic: error while loading shared libraries: /home/pmingj/qt-2.3.7/lib/libqte.so.2: ELF file OS ABI invalid
make: *** [form1.h] Error 127

这时候metric.pro的内容:
######################################################################
# Automatically generated by qmake (1.07a) Thu Nov 10 10:52:14 2005
######################################################################

TEMPLATE = app
INCLUDEPATH += .

# Input
HEADERS += form1.ui.h
INTERFACES += form1.ui
SOURCES += main.cpp

我以前曾经使用
[aaa@localhost metric]$ qmake -project
[aaa@localhost metric]$ tmake -o Makefile t1.pro
[aaa@localhost metric]$ make
编译出qt的教程程序helloworld,并在arm上运行。

请问问题出在哪里?是不是qt-x11-free-3.3.2和qte的qt-2.3.7不能搭配使用?谢谢。
[ 此贴被XChinux在2005-11-10 22:41重新编辑 ]
离线angusliu

只看该作者 1楼 发表于: 2005-11-10
看上去,你好象还没有交叉编译QTE的库文件呀???
离线pmingj

只看该作者 2楼 发表于: 2005-11-10
arm的qt/E运行库已经编译好的了。就在qt-2.3.7/lib下,名字叫libqte.so.2.3.7
[aaa@localhost lib]$ file libqte.so.2.3.7
libqte.so.2.3.7: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
离线doublezha

只看该作者 3楼 发表于: 2005-11-10
你在从编译pc上的应用转到编译针对arm上的应用的过程中,有没有改编你的 QTEDIR路径阿,如果没有,你必须得把它改到指向那个交叉编译过的qt-2.3.7(qt-embedded-2.3.7).并在条件下指明PATH和LD_LIBRARY_PATH.试试看,一步步来.
离线pmingj

只看该作者 4楼 发表于: 2005-11-10
QTDIR已经改成~/qt.2.3.7了才进行编译的,不行阿。
离线doublezha

只看该作者 5楼 发表于: 2005-11-11
你把你的qt-x11版本换低一些的,qt/x11版本要比qt/E版本低,因为qt/X11的工具uic和designer生成的源文件会和qt/E的库一起编译连接,本着向前兼容,你要用个比qt/e-2。3。7版本低的qt/x11.试试吧,
离线stlctt
只看该作者 6楼 发表于: 2005-12-07
我也遇到过类似的问题,是因为环境变量设置的问题,QTEDIR和LD_LIBRARY_PATH这两个变量一定要指定到编译好QTE库才可以。
快速回复
限100 字节
 
上一个 下一个