qsub提交的本质是一个shell脚本,而Makefile是专门给make命令准备的,队列系统如果按照shell命令来辨别的话肯定不认,所以出现一堆错误。
你的pbs脚本可以这样准备:
#!/bin/bash
#PBS -S /bin/bash
#PBS -N makefile_test
#PBS -l nodes=1:ppn=4
NPROCS=`wc -l $PBS_NODEFILE`
make -j${NPROCS}
将上面的内容保存为make.pbs.sh,然后 qsub make.pbs.sh就可以了。make会自动寻找当前目录下的Makefile文件,并执行。如果需要指定某个Makefile,可以将最后一行变为: make -j${NPROCS} -f make_file,其中make_file就是你需要指定的Makefile文件名。上面的PBS脚本内容你可以根据自己的实际需要进行修改。如果使用SGE的话,脚本示例如下:
#!/bin/bash
#$ -S /bin/bash
#$ -N makefile_test
#$ -pe orte 4
NPROCS=`wc -l $SGE_NODEFILE`
make -j${NPROCS}
其它的脚本系统就不清楚了。你可能需要先了解自己使用的队列系统和脚本编写的基础知识。