Compilation 从makefile调用mpicc时挂起;作为单个命令运行良好

Compilation 从makefile调用mpicc时挂起;作为单个命令运行良好,compilation,makefile,mpi,icc,Compilation,Makefile,Mpi,Icc,我正在尝试编译WRF(怀疑这是否相关),但在运行编译脚本时遇到了一个问题,mpicc将挂起。icc和mpif90没有问题。编译脚本是w/#执行的/垃圾箱/垃圾箱-f 下面是一个详细的例子。我运行脚本并到达这里 make[3]: Entering directory `/home/jason/wrf/wrf3.5/external/RSL_LITE' mpicc -DMPI2_SUPPORT -DMPI2_THREAD_SUPPORT -DFSEEKO64_OK -w -O3 -DDM_PA

我正在尝试编译WRF(怀疑这是否相关),但在运行编译脚本时遇到了一个问题,mpicc将挂起。icc和mpif90没有问题。编译脚本是w/#执行的/垃圾箱/垃圾箱-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$

立即编译。再次启动编译脚本会执行完全相同的操作,但会在下一个文件中执行。我不知道该怎么做,这基本上是不可能通过谷歌搜索到的。

如果你喜欢启动它,这个命令能工作吗

env -i $SHELL -c 'cd /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
??可能是缺少环境变量才是罪魁祸首


另外,命令中的额外空格是什么?能否尝试运行
uniname-bcp Makefile
,查看其中是否有任何非
[\t\n]
字符可能会干扰命令行?

出于存档目的,解决方案是添加“-cc=icc”。

可能是不同的编译器吗?在终端中键入
which mpicc
,并在调用
mpicc
之前将此命令放入脚本中。另外,将
-v
选项添加到mpicc以增加详细性。负,相同的mpicc。在挂起之前
-v
选项是否显示任何内容?如果由
mpicc
调用的编译器需要许可证(例如,浮动网络许可证),由于此时许可证服务器不可用,或者未在
csh
脚本中正确设置许可证路径环境变量,因此它可能会挂起。手工编译文件时,它会生成一个object
.o
文件,因此makefile会跳过该源文件并继续下一个源文件。