主题 : linux2.6.29+qtopia2.2.0 如何实现多线程编程呢? 复制链接 | 浏览器收藏 | 打印
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
20楼  发表于: 2010-02-02 12:18

 Re:回 8楼(kasim) 的帖子

引用第17楼liangruisan于2010-02-01 13:00发表的 回 8楼(kasim) 的帖子 :
高手,怎么“这可以通过在qte的配置上加上'-thread'参数做到”做才能有效果,能够在详细点吗?谢谢了,我这个问题纠结了很久。谢谢了

由于qtopia 2.2.0的makefile里的问题,你现在只能自己手动编译出支持thread的libqte-mt.so. 具体做法如下:

1. 按照手册上的步骤,用“build”或者"build-all"脚本做一次完整的qtopia 2.2.0的编译;

2. 在解压出来的qtopia-2.2.0-FriendlyARM目录下执行
$source setQteEnv

3. 进入qtopia-2.2.0-FriendlyARM/qt2目录,清除之前编译生成的文件然后手动配置qt embedded以支持multi-thread:
$cd qt2
$make clean
$echo yes |./configure -embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -gif -thread

注意configure之后的参数与x86-qtopia或者arm-qtopia目录下的“build“脚本里的”echo yes | ./configure -qte“之后的参数保持一致, 只是在最后加上"-thread"

4. 上面的步骤执行后会在当前目录下产生src-mt.mk文件,用编辑器将其内容的最后一行”cd src; $(MAKE) clean“删除或注释掉;

5. 编译libqte-mt
$make src-mt

编译完成后将在qtopia-2.2.0-FriendlyARM/qtopia/lib目录下生成所期待的libqte-mt.so.*文件。用nm命令可以看到现在qt embedded中就已经加入了QThread支持:
alex@aling-xw4400:~/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2$ nm ../qtopia/lib/libqte-mt.so.2.3.12 |grep -i QThread
0015deb0 t _GLOBAL__I_qthread_unix.cpp
0039d0a0 b _ZL23qthreadposteventprivate
0039d094 b _ZL40QThreadPostEventPrivate_metaObj_unloader
0015ec40 T _ZN23QThreadPostEventPrivate10sendEventsEv
...
0038f1a0 V _ZTV23QThreadPostEventPrivate
0038f240 V _ZTV5QListI14QThreadQtEventE
0038f208 V _ZTV7QThread
0038f280 V _ZTV8QPtrDictI7QThreadE
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 15159
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2010-03-01
最后登录: 2017-09-13
21楼  发表于: 2010-03-08 15:10
好贴!!!!   
级别: 新手上路
UID: 11301
精华: 0
发帖: 30
金钱: 150 两
威望: 30 点
贡献值: 0 点
综合积分: 60 分
注册时间: 2009-12-03
最后登录: 2011-05-25
22楼  发表于: 2010-04-13 10:58
加精
级别: 新手上路
UID: 9123
精华: 0
发帖: 19
金钱: 135 两
威望: 45 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-17
最后登录: 2010-11-12
23楼  发表于: 2010-05-07 14:03
对不起字体太大不好看了。
按照你这步骤进行,在编译程序时都会报错啊,不管你的程序有没有用多线程都报错。报错如下:
[root@tom label_fbli]# ./build
rm -f .obj/release-shared/moc_label_fbli_base.o
rm -f .moc/release-shared/moc_label_fbli_base.cpp
rm -f .ui/release-shared/label_fbli_base.cpp .ui/release-shared/label_fbli_base.h
rm -f .obj/release-shared/main.o .obj/release-shared/label_fbli_base.o
rm -f *~ core *.core
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/uic label_fbli_base.ui -o .ui/release-shared/label_fbli_base.h
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os  -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"label_fbli\" -DQTOPIA_TRTARGET=\"label_fbli\" -DQT_NO_DEBUG -I/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-generic-g++ -I. -I../../qtopia-2.2.0-FriendlyARM/qtopia/include -I../../qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/main.o main.cpp
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/uic label_fbli_base.ui -i label_fbli_base.h -o .ui/release-shared/label_fbli_base.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os  -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"label_fbli\" -DQTOPIA_TRTARGET=\"label_fbli\" -DQT_NO_DEBUG -I/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-generic-g++ -I. -I../../qtopia-2.2.0-FriendlyARM/qtopia/include -I../../qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/label_fbli_base.o .ui/release-shared/label_fbli_base.cpp
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/moc .ui/release-shared/label_fbli_base.h -o .moc/release-shared/moc_label_fbli_base.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os  -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"label_fbli\" -DQTOPIA_TRTARGET=\"label_fbli\" -DQT_NO_DEBUG -I/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-generic-g++ -I. -I../../qtopia-2.2.0-FriendlyARM/qtopia/include -I../../qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/moc_label_fbli_base.o .moc/release-shared/moc_label_fbli_base.cpp
g++  -o label_fbli .obj/release-shared/main.o .obj/release-shared/label_fbli_base.o .obj/release-shared/moc_label_fbli_base.o   -lqtopia2 -lqtopia -lqpe -L/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib -L/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/lib -lqte
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib/libqte.so: undefined reference to `pthread_mutexattr_destroy'
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib/libqte.so: undefined reference to `pthread_create'
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib/libqte.so: undefined reference to `pthread_mutex_trylock'
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib/libqte.so: undefined reference to `pthread_mutexattr_settype'
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib/libqte.so: undefined reference to `pthread_mutexattr_init'
collect2: ld returned 1 exit status
make: *** [label_fbli] Error 1
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
24楼  发表于: 2010-05-07 14:57
g++  -o label_fbli .obj/release-shared/main.o .obj/release-shared/label_fbli_base.o .obj/release-shared/moc_label_fbli_base.o   -lqtopia2 -lqtopia -lqpe -L/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib -L/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/lib -lqte
/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib/libqte.so: undefined reference to `pthread_mutexattr_destroy'

你需要在命令行上加上"-lpthread"来链接libpthread.so
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9123
精华: 0
发帖: 19
金钱: 135 两
威望: 45 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-17
最后登录: 2010-11-12
25楼  发表于: 2010-05-08 10:29
引用第24楼kasim于2010-05-07 14:57发表的  :

你需要在命令行上加上"-lpthread"来链接libpthread.so

应该加了"lpthread"的。我用的./build命令内容如下:
source /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv
qmake -o Makefile -spec /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-generic-g++ *.pro
make clean
make

在路径/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-generic-g++ 下找到qmake.conf 部分内容如下:
QMAKE_CC                = gcc
QMAKE_LEX               = flex
QMAKE_LEXFLAGS          =
QMAKE_YACC              = yacc
QMAKE_YACCFLAGS         = -d
QMAKE_CFLAGS            = -pipe
QMAKE_CFLAGS_WARN_ON    = -Wall -W
QMAKE_CFLAGS_WARN_OFF   =
QMAKE_CFLAGS_RELEASE    = -Os
QMAKE_CFLAGS_DEBUG      = -g
QMAKE_CFLAGS_SHLIB      = -fPIC
QMAKE_CFLAGS_YACC       = -Wno-unused -Wno-parentheses
QMAKE_CFLAGS_THREAD     = -D_REENTRANT

QMAKE_CXX               = g++
    ....
QMAKE_LIBS_QT           = -lqte
QMAKE_LIBS_QT_THREAD    = -lqte-mt  #fbli mask

QMAKE_LIBS_QT_OPENGL    = -lqgl
QMAKE_LIBS_QTOPIA       = -lqtopia2 -lqtopia -lqpe
QMAKE_LIBS_THREAD       = -lpthread

QMAKE_MOC               = $(QTDIR)/bin/moc
这个里面加了你说的这个啊。我不知道你说的这个要在什么命令行里加?
    
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
26楼  发表于: 2010-05-08 16:38
不管qmake.conf里面定义了什么,只有实际加到gcc, g++命令行上的参数才有意义。为什么不回头再看一眼g++实际调用的命令行呢?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9123
精华: 0
发帖: 19
金钱: 135 两
威望: 45 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-17
最后登录: 2010-11-12
27楼  发表于: 2010-05-08 18:34
引用第26楼kasim于2010-05-08 16:38发表的  :
不管qmake.conf里面定义了什么,只有实际加到gcc, g++命令行上的参数才有意义。为什么不回头再看一眼g++实际调用的命令行呢?

我的理解是g++带的参数选项命令是在qmake.conf定义好的。不是我手动加上去的。我现在找不到方法如何设置才能在g++实际调用中加上-lpthread。能否给个指引啊?万分感谢!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
28楼  发表于: 2010-05-08 18:51
我的理解是g++带的参数选项命令是在qmake.conf定义好的

如果是这样的话,那qmake.conf里的定义应该会在某个Makefile里调用,去把它找出来,然后看看为什么QMAKE_LIBS_THREAD没有被用到。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 24486
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2010-07-08
最后登录: 2011-05-18
29楼  发表于: 2010-07-09 12:05
每一步都按贴子写的,最后 在qt2/目录下执行make src-mt,出现下面的错误:
[root@Fedora qt2]# make src-mt
cd src/moc; make
make[1]: Entering directory `/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/src/moc'
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o mocgen.o mocgen.cpp
moc.y: In function ‘int main(int, char**)’:
moc.y:1272: warning: deprecated conversion from string constant to ‘char*’
moc.y:1290: warning: deprecated conversion from string constant to ‘char*’
moc.y:1300: warning: deprecated conversion from string constant to ‘char*’
moc.y:1319: warning: deprecated conversion from string constant to ‘char*’
moc.y:1323: warning: deprecated conversion from string constant to ‘char*’
moc.y: In function ‘void generateClass()’:
moc.y:2613: warning: deprecated conversion from string constant to ‘char*’
moc.y:2615: warning: deprecated conversion from string constant to ‘char*’
moc.y:2616: warning: deprecated conversion from string constant to ‘char*’
moc.y:2617: warning: deprecated conversion from string constant to ‘char*’
moc.y:2756: warning: deprecated conversion from string constant to ‘char*’
moc.y:2761: warning: deprecated conversion from string constant to ‘char*’
moc.y: In function ‘int yyparse()’:
moc.y:522: warning: deprecated conversion from string constant to ‘char*’
moc.y:524: warning: deprecated conversion from string constant to ‘char*’
moc.y:525: warning: deprecated conversion from string constant to ‘char*’
moc.y:526: warning: deprecated conversion from string constant to ‘char*’
moc.y:533: warning: deprecated conversion from string constant to ‘char*’
moc.y:551: warning: deprecated conversion from string constant to ‘char*’
moc.y:552: warning: deprecated conversion from string constant to ‘char*’
moc.y:564: warning: deprecated conversion from string constant to ‘char*’
moc.y:565: warning: deprecated conversion from string constant to ‘char*’
moc.y:566: warning: deprecated conversion from string constant to ‘char*’
moc.y:567: warning: deprecated conversion from string constant to ‘char*’
moc.y:568: warning: deprecated conversion from string constant to ‘char*’
moc.y:569: warning: deprecated conversion from string constant to ‘char*’
moc.y:570: warning: deprecated conversion from string constant to ‘char*’
moc.y:571: warning: deprecated conversion from string constant to ‘char*’
moc.y:572: warning: deprecated conversion from string constant to ‘char*’
moc.y:588: warning: deprecated conversion from string constant to ‘char*’
moc.y:589: warning: deprecated conversion from string constant to ‘char*’
moc.y:634: warning: deprecated conversion from string constant to ‘char*’
moc.y:638: warning: deprecated conversion from string constant to ‘char*’
moc.y:650: warning: deprecated conversion from string constant to ‘char*’
moc.y:670: warning: deprecated conversion from string constant to ‘char*’
moc.y:713: warning: deprecated conversion from string constant to ‘char*’
moc.y:729: warning: deprecated conversion from string constant to ‘char*’
moc.y:738: warning: deprecated conversion from string constant to ‘char*’
moc.y:739: warning: deprecated conversion from string constant to ‘char*’
y.tab.c:3175: warning: label ‘yyerrlab’ defined but not used
mocgen.cpp: At global scope:
mocgen.cpp:4: warning: ‘yyrcsid’ defined but not used
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qbuffer.o ../tools/qbuffer.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qcollection.o ../tools/qcollection.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qcstring.o ../tools/qcstring.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qdatastream.o ../tools/qdatastream.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qdatetime.o ../tools/qdatetime.cpp
../tools/qdatetime.cpp: In static member function ‘static bool QDate::leapYear(int)’:
../tools/qdatetime.cpp:574: warning: suggest parentheses around && within ||
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qfile.o ../tools/qfile.cpp
../tools/qfile.cpp: In member function ‘virtual int QFile::getch()’:
../tools/qfile.cpp:364: warning: suggest explicit braces to avoid ambiguous ‘else’
../tools/qfile.cpp: In member function ‘virtual int QFile::ungetch(int)’:
../tools/qfile.cpp:458: warning: suggest explicit braces to avoid ambiguous ‘else’
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qgarray.o ../tools/qgarray.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qgdict.o ../tools/qgdict.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qglist.o ../tools/qglist.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qglobal.o ../tools/qglobal.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qgvector.o ../tools/qgvector.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qiodevice.o ../tools/qiodevice.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qregexp.o ../tools/qregexp.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qstring.o ../tools/qstring.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qtextcodec.o ../tools/qtextcodec.cpp
../tools/qtextcodec.cpp: In constructor ‘QTextCodecFromIOD::QTextCodecFromIOD(QIODevice*)’:
../tools/qtextcodec.cpp:1074: warning: ‘byte’ may be used uninitialized in this function
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qtextstream.o ../tools/qtextstream.cpp
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qutfcodec.o ../tools/qutfcodec.cpp
../tools/qutfcodec.cpp: In member function ‘virtual int QUtf16Codec::heuristicContentMatch(const char*, int) const’:
../tools/qutfcodec.cpp:191: warning: suggest parentheses around && within ||
g++  -c -I/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -Wno-unused -Wno-parentheses -pipe -DQWS -fno-exceptions -fno-rtti -O2 -fno-default-inline -Wall -W -DNO_DEBUG -DQT_NO_CODECS -DQT_LITE_UNICODE -DQT_BUILDING_MOC -I../../include -I../tools -I. -o qfile_unix.o ../tools/qfile_unix.cpp
g++   -o ./moc mocgen.o qbuffer.o qcollection.o qcstring.o qdatastream.o qdatetime.o qfile.o qgarray.o qgdict.o qglist.o qglobal.o qgvector.o qiodevice.o qregexp.o qstring.o qtextcodec.o qtextstream.o qutfcodec.o qfile_unix.o    -lm
qtextcodec.o: In function `setupBuiltinCodecs()':
qtextcodec.cpp:(.text+0x1baa): undefined reference to `QEucJpCodec::QEucJpCodec()'
qtextcodec.cpp:(.text+0x1bbe): undefined reference to `QSjisCodec::QSjisCodec()'
qtextcodec.cpp:(.text+0x1bd2): undefined reference to `QJisCodec::QJisCodec()'
qtextcodec.cpp:(.text+0x1bee): undefined reference to `vtable for QEucKrCodec'
qtextcodec.cpp:(.text+0x1c02): undefined reference to `QGbkCodec::QGbkCodec()'
qtextcodec.cpp:(.text+0x1c1e): undefined reference to `vtable for QBig5Codec'
qtextcodec.cpp:(.text+0x1c3a): undefined reference to `vtable for QArabicCodec'
qtextcodec.cpp:(.text+0x1c56): undefined reference to `vtable for QHebrewCodec'
qtextcodec.cpp:(.text+0x1c72): undefined reference to `vtable for QTsciiCo
collect2: ld returned 1 exit status
make[1]: *** [moc] Error 1
make[1]: Leaving directory `/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/src/moc'
make: *** [src-moc] Error 2

请问怎么解决啊