使用mpicc(MPICH2)和pthread_barrier(-lpthread)进行编译

时间:2010-07-02 21:33:10

标签: c compiler-errors pthreads mpich

我有一个正常运行的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。 [/编辑]

有谁知道什么可能是错的,我怎么能让它编译?

干杯!

2 个答案:

答案 0 :(得分:1)

pthread_barrier_t是ADVANCED REALTIME THREAD选项的一部分,因此可能无法在您的系统上使用。 顺便说一句,如果你提出这样一个特定的问题,你应该经常提到操作系统,版本号等等。

答案 1 :(得分:1)

这意味着pthread_barrier_t类型不在范围内。你有#include'd pthread.h吗?