本人在利用designer为s3c2410开发简单程序时遇到了些问题,详细描述如下:
(一)环境描述
本人在RedHat9.0下开发qte2.3.10和qtopia-free-2.1.1 for arm9
采用三星2410smdk aiji的板子
cross compiler 2.95.3
(二)目前工作进程:
交叉编译通过了qte,qtopia,
可以在开发板子上运行qte的一些example,如hello等和完整的qtopia
准备利用designer开发一些程序在开发板上跑
(三)开发相关工具介绍:
designer采用的是qt-X11-2.3.2 bin下面的
tmaker采用的是tmaker1.8 for linux-arm-g++
progen也是该tamker bin下面的
uic moc 采用的是交叉编译后的qte2.3.10_target bin下面的
(四)一个简单widget程序开发的步骤描述:
1 运行designer
desiger &
2 做一个简单的240*320的窗口,保存为qtehello.ui
3 写一个main.cpp文件,参考了qte文档中designer中如何写main.cpp的部分
和优龙提供的pdf文档
4 在qtehello.ui目录下,生成一个工程文件
progen -t app.t -o qtehello.pro qtehello.ui
(这步是参照优龙提供的一个pdf文档做的)
5 修改pro文件
pro文件如下
TEMPLATE= app
CONFIG= qt warn_on release
HEADERS= qtehello.h
SOURCES= qtehello.cpp \
main.cpp
INTERFACES= qtehello.ui
6 在该目录下生成makefile文件
tmake -o Makefile qtehello.pro
7 修改Makefile文件
$QTDIR设置成了qte-2.3.10_target目录
其中lib包括qteforarm目录下的lib -lqte和-ljpeg
include是该目录下的include
(五)问题出现了
qte的include目录下没有qtehello.h中包含的头文件
qvariant.h qwidget.h
而这两个头文件却包含在了qt-x11-2.3.2的include中,
因此我把Makefile文件中include部分又加上了qt-x11-2.3.2的include目录
这次问题解决了,找到了上面的头文件,但又出现了新的问题
undefined reference to `QMetaObject::new_metaobject
moc_qtehello.o(.text+0x164): undefined reference to `QMetaObject::new_metaobject(char const *, char const *, QMetaData *, int, QMetaData *, int, QMetaProperty *, int, QMetaEnum *, int, QClassInfo *, int)'
moc_qtehello.o(.rodata+0x16c): undefined reference to `QWidget::dragEnterEvent(QDragEnterEvent *)'
moc_qtehello.o(.rodata+0x170): undefined reference to `QWidget::dragMoveEvent(QDragMoveEvent *)'
moc_qtehello.o(.rodata+0x174): undefined reference to `QWidget::dragLeaveEvent(QDragLeaveEvent *)'
moc_qtehello.o(.rodata+0x178): undefined reference to `QWidget::dropEvent(QDropEvent *)'
我认为是qte的lib里面没有这些函数,它们应该都在qt for x11的函数库里面
但是qtx11不能交叉编译,为此我很困惑,不知该如何解决这个简单的问题了
注明:我看了优龙提供的一个Qt嵌入式图形开发(实战篇).pdf,但是在我这里不行,
请各位指点一下!谢过了!
[ 此贴被XChinux在2006-01-17 15:06重新编辑 ]