【发布时间】:2013-06-25 04:18:11
【问题描述】:
我正在尝试编译 WRF(怀疑是否相关)并且遇到了一个问题,即使用编译脚本运行时 mpicc 会挂起。 icc 和 mpif90 没有问题。编译脚本使用 #!/bin/csh -f
执行只是为了冗长,这里是一个例子。我运行脚本并到达这里
make[3]: Entering directory `/home/jason/wrf/wrf3.5/external/RSL_LITE'
mpicc -DMPI2_SUPPORT -DMPI2_THREAD_SUPPORT -DFSEEKO64_OK -w -O3 -DDM_PARALLEL -DMAX_HISTORY=25 -DNMM_CORE=0 -c rsl_bcast.c
然后挂起。那么我自己运行那条线
jason@server:~/wrf/wrf3.5$ cd /home/jason/wrf/wrf3.5/external/RSL_LITE
jason@server:wrf3.5/external/RSL_LITE$ mpicc -DMPI2_SUPPORT -DMPI2_THREAD_SUPPORT -DFSEEKO64_OK -w -O3 -DDM_PARALLEL -DMAX_HISTORY=25 -DNMM_CORE=0 -c rsl_bcast.c
jason@server:wrf3.5/external/RSL_LITE$
立即编译。再次启动编译脚本会做完全相同的事情,但在下一个文件上。我不知道该怎么做,这在谷歌上基本上是不可能的。
【问题讨论】:
-
会不会是不同的编译器?在终端中输入
which mpicc,并在调用mpicc之前将此命令放入脚本中。此外,将-v选项添加到 mpicc 以增加详细程度。 -
否定的,相同的 mpicc。
-
-v选项在挂起之前是否显示任何内容? -
如果被
mpicc调用的编译器需要许可证(例如浮动网络许可证),它可能会由于许可证服务器此时不可用或许可证路径环境变量而挂起没有在csh脚本中正确设置。当您手动编译文件时,它会生成一个对象.o文件,因此 makefile 会跳过该源文件并继续下一个源文件。
标签: compilation makefile mpi icc