24小时热门版块排行榜    

查看: 1579  |  回复: 4

VICTOR91

木虫 (初入文坛)

[求助] fortran程序如何在linux系统的服务器上进行编译呢?makefile文件怎么写呢? 已有1人参与

test文件夹中有如下文件:
H.f
p.f
s.f
Makefile

Makefile文件如下:
FINCLUDES=p.f
FFLAGS = -O3 -xHOST -ipo -static -no-prec-div
FC=ifort
SOURCES= H.f s.f
OBJECTS = $(SOURCES:.f=.o)
TARGET=H.exe
$(TARGET):         $(OBJECTS)
        $(FC) $(FFLAGS) -o $(TARGET) $(OBJECTS)       
clean:;        rm -f $(OBJECTS) $(TARGET)

但是在服务器上qsub Makefile后,出现如下错误:

line 2: FFLAGS: command not found
line 4: H.f: command not found
line 5: SOURCES:.f=.o: command not found
line 5: OBJECTS: command not found
line 6: TARGET: command not found
line 7: OBJECTS: command not found
line 8: FC: command not found
line 8: FFLAGS: command not found
line 8: TARGET: command not found
line 8: OBJECTS: command not found
line 8: -o: command not found
line 9: clean:: command not found
line 9: OBJECTS: command not found
line 9: TARGET: command not found

为何会出现以上问题呢?是哪里错了?还是我提交的缺少mhd?,或者我应该提交qsub mhd.pbs文件呢?求解答!谢谢啦!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fmying

银虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
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}

其它的脚本系统就不清楚了。你可能需要先了解自己使用的队列系统和脚本编写的基础知识。
上善若水
2楼2014-12-25 15:07:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

VICTOR91

木虫 (初入文坛)

引用回帖:
2楼: Originally posted by fmying at 2014-12-25 15:07:55
qsub提交的本质是一个shell脚本,而Makefile是专门给make命令准备的,队列系统如果按照shell命令来辨别的话肯定不认,所以出现一堆错误。
你的pbs脚本可以这样准备:

#!/bin/bash
#PBS -S /bin/bash
#PBS -N  ...

还是不行啊,出现如下错误:

No executable was specified on the mpirun command line.

Aborting.

这是为什么呢?谢谢啦!
3楼2014-12-25 18:36:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fmying

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
VICTOR91: 金币+5, ★★★很有帮助, 很热心,谢谢你! 2014-12-26 16:12:27
引用回帖:
3楼: Originally posted by VICTOR91 at 2014-12-25 18:36:22
还是不行啊,出现如下错误:

No executable was specified on the mpirun command line.

Aborting.

这是为什么呢?谢谢啦!...

哪里需要mpirun了?没发现有调用mpirun命令的地方啊。
能否将你做了什么,怎么做的,文件是哪些贴出来?具体就是Makefile和PBS脚本。
不然没法回答啊。
上善若水
4楼2014-12-25 20:35:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

VICTOR91

木虫 (初入文坛)

引用回帖:
4楼: Originally posted by fmying at 2014-12-25 20:35:25
哪里需要mpirun了?没发现有调用mpirun命令的地方啊。
能否将你做了什么,怎么做的,文件是哪些贴出来?具体就是Makefile和PBS脚本。
不然没法回答啊。...

我把mpirun去掉了,改成以下形式

文件有:
H.f
p.f
s.f
Makefile
make.pbs.sh

Makefile里面没有动,还是最上面我贴出的那些。
make.pbs.sh如下:
#!/bin/bash
#PBS -N test
#PBS -o test.stdout
#PBS -e test.error
#PBS -l nodes=1:ppn=1
#PBS -q batch
PBS_O_WORKDIR=/home/code/
cd $PBS_O_WORKDIR
NPROCS=`wc -l $PBS_NODEFILE`
make -j${NPROCS}

现在出现的问题是:
make: Nothing to be done for `/opt/gridview//pbs//dispatcher/aux//7131.node25'.
5楼2014-12-26 16:11:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 VICTOR91 的主题更新
信息提示
请填处理意见