主题 : linux2.6.29+qtopia2.2.0 如何实现多线程编程呢? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 6261
精华: 0
发帖: 13
金钱: 130 两
威望: 130 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2009-05-25
最后登录: 2010-07-27
楼主  发表于: 2009-06-29 15:37

 linux2.6.29+qtopia2.2.0 如何实现多线程编程呢?

管理提醒: 本帖被 arm9home 从 Linux技术交流专区 移动到本区(2009-09-10)
最近在做qt开发,需要用到多线程编程,不知道目前友善之臂提供的linux2.6.29+qtopia2.2.0能不能实现多线程编程?如何实现?
有做过的大侠指教!!!急
级别: 新手上路
UID: 9123
精华: 0
发帖: 19
金钱: 135 两
威望: 45 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-17
最后登录: 2010-11-12
1楼  发表于: 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: 9123
精华: 0
发帖: 19
金钱: 135 两
威望: 45 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-17
最后登录: 2010-11-12
2楼  发表于: 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: 9123
精华: 0
发帖: 19
金钱: 135 两
威望: 45 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-17
最后登录: 2010-11-12
3楼  发表于: 2010-05-08 18:34
引用第26楼kasim于2010-05-08 16:38发表的  :
不管qmake.conf里面定义了什么,只有实际加到gcc, g++命令行上的参数才有意义。为什么不回头再看一眼g++实际调用的命令行呢?

我的理解是g++带的参数选项命令是在qmake.conf定义好的。不是我手动加上去的。我现在找不到方法如何设置才能在g++实际调用中加上-lpthread。能否给个指引啊?万分感谢!