我有一个正常运行的MPI例程,工作正常。在使这个MPI和共享内存混合的过程中,我正在使用pthreads。这反过来证明了pthread_barriers的需要。
但是当我尝试使用mpicc编译器编译我的代码时,它会抱怨pthread_barrier_t和其他屏障命令。如果我删除这些,并保留其他线程部件,它编译就好了。
这是我为了打破编译而插入的代码行:
pthread_barrier_t* barrier;
对于编译,我使用:
mpicc -lm myprogram.c -o myprogram
编译器返回的错误是:
myprogram.c:34: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
第34行与我上面写的相对应。
[编辑]我在Ubuntu 9.10上使用以下gcc / mpicc编译器运行它: gcc(Ubuntu 4.4.1-4ubuntu9)4.4.1。 [/编辑]
有谁知道什么可能是错的,我怎么能让它编译?
干杯!
答案 0 :(得分:1)
pthread_barrier_t
是ADVANCED REALTIME THREAD选项的一部分,因此可能无法在您的系统上使用。
顺便说一句,如果你提出这样一个特定的问题,你应该经常提到操作系统,版本号等等。
答案 1 :(得分:1)
这意味着pthread_barrier_t
类型不在范围内。你有#include
'd pthread.h
吗?