用的软件包 是 mini2440自己带的 光碟的
系统 Fedora9
有一个 thread多线程的例子 我在x86的qfvb上已经编译成功且能显示
然后用arm的编译后也通过,但移植到版上不能运行
arm 多线程的编译是
多线程编译
1. 按照手册上的步骤,用“build”或者"build-all"脚本做一次完整的qtopia 2.2.0的编译;
Cp lib 将lib 备份
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后的参数是我自己的配置,可能与你的不同。configure之后的参数应该与你自己x86-qtopia或者arm-qtopia目录下的“build“脚本里的”echo yes | ./configure -qte“之后的参数保持一致, 只是在最后加上"-thread"
4. 上面的步骤执行后会在当前目录下产生src-mt.mk文件,用编辑器将其内容的最后一行”cd src; $(MAKE) clean“删除或注释掉;
5修改将qt2/src/tools/qtextcodec.cpp改成下面的
2148-2180行
#define QT_NO_EUCJPCODEC
#ifndef QT_NO_EUCJPCODEC
(void)new QEucJpCodec;
#endif
#define QT_NO_SJISCODEC
#ifndef QT_NO_SJISCODEC
(void)new QSjisCodec;
#endif
#define QT_NO_JISCODEC
#ifndef QT_NO_JISCODEC
(void)new QJisCodec;
#endif
#define QT_NO_EUCKRCODEC
#ifndef QT_NO_EUCKRCODEC
(void)new QEucKrCodec;
#endif
#define QT_NO_GBKCODEC
#ifndef QT_NO_GBKCODEC
(void)new QGbkCodec;
#endif
#define QT_NO_BIG5CODEC
#ifndef QT_NO_BIG5CODEC
(void)new QBig5Codec;
#endif
#define QT_NO_RTLCODEC
#ifndef QT_NO_RTLCODEC
(void)new QArabicCodec;
(void)new QHebrewCodec;
#endif
#define QT_NO_TSCIICODEC
#ifndef QT_NO_TSCIICODEC
(void)new QTsciiCodec;
#endif
6. 编译libqte-mt
$make src-mt
编译完成后将在qtopia-2.2.0- FriendlyARM/qtopia/lib目录下生成所期待的libqte-mt.so.*文件。用nm命令可以看到现在qt embedded中就已经加入了QThread支持
Cp libqte。So*
然后将lqte lqtopia lqtoia2 从备份中拷贝会来lib
在编译的时候 。pro中加入CONFIG +=thread
在Makefile中 LIBS 加入 lqte lqtoia2
编译没有警告和错误 下面是 make。log
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -D_REENTRANT -DQT_NO_QWS_VFB -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"thread\" -DQTOPIA_TRTARGET=\"thread\" -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -I. -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/include -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/mainwindow.o mainwindow.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -D_REENTRANT -DQT_NO_QWS_VFB -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"thread\" -DQTOPIA_TRTARGET=\"thread\" -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -I. -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/include -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/trithread.o trithread.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -D_REENTRANT -DQT_NO_QWS_VFB -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"thread\" -DQTOPIA_TRTARGET=\"thread\" -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -I. -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/include -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/sinthread.o sinthread.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -D_REENTRANT -DQT_NO_QWS_VFB -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"thread\" -DQTOPIA_TRTARGET=\"thread\" -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -I. -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/include -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/main.o main.cpp
/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/moc mainwindow.h -o .moc/release-shared/moc_mainwindow.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -D_REENTRANT -DQT_NO_QWS_VFB -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"thread\" -DQTOPIA_TRTARGET=\"thread\" -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -I. -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/include -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/moc_mainwindow.o .moc/release-shared/moc_mainwindow.cpp
/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/moc trithread.h -o .moc/release-shared/moc_trithread.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -D_REENTRANT -DQT_NO_QWS_VFB -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"thread\" -DQTOPIA_TRTARGET=\"thread\" -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -I. -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/include -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/moc_trithread.o .moc/release-shared/moc_trithread.cpp
/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/moc sinthread.h -o .moc/release-shared/moc_sinthread.cpp
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -D_REENTRANT -DQT_NO_QWS_VFB -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"thread\" -DQTOPIA_TRTARGET=\"thread\" -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -I. -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/include -I../../arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -I.ui/release-shared/ -I.moc/release-shared/ -o .obj/release-shared/moc_sinthread.o .moc/release-shared/moc_sinthread.cpp
arm-linux-g++ -o thread .obj/release-shared/mainwindow.o .obj/release-shared/trithread.o .obj/release-shared/sinthread.o .obj/release-shared/main.o .obj/release-shared/moc_mainwindow.o .obj/release-shared/moc_trithread.o .obj/release-shared/moc_sinthread.o -luuid -lqtopia2 -lqtopia -lqpe -L/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib -L/home/QT/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/lib -lqte-mt -lpthread -lqte -lqtopia2