Compilation 从makefile调用mpicc时挂起;作为单个命令运行良好
我正在尝试编译WRF(怀疑这是否相关),但在运行编译脚本时遇到了一个问题,mpicc将挂起。icc和mpif90没有问题。编译脚本是w/#执行的/垃圾箱/垃圾箱-f 下面是一个详细的例子。我运行脚本并到达这里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
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会跳过该源文件并继续下一个源文件。