我要编译和运行fortran程序
现在的做法是:
1、使用gedit编写程序,保存为a.f95
2、终端执行命令:gfortran a.f95 生成:a.out文件
3、终端执行 ./a.out 得到输出
4、终端执行gnuplot,在fnuplot里画图
这个过程太麻烦了,linux下还没有fortran 的集成编译软件
有简单的办法吗?
[请教] 求编译程序的简单办法
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 68
- 注册时间: 2009-01-09 1:04
-
- 帖子: 68
- 注册时间: 2009-01-09 1:04
Re: [请教] 求编译程序的简单办法
自己顶一下,大家也这么做得话,也可以告诉我一声
-
- 帖子: 38
- 注册时间: 2008-09-05 23:13
Re: [请教] 求编译程序的简单办法
可以试试写个shell脚本,一次性执行四个步骤。
-
- 帖子: 68
- 注册时间: 2009-01-09 1:04
Re: [请教] 求编译程序的简单办法
写过一个类似的脚本,但是,发现缺乏同步,往往编译过程还没有结束,脚本就运行过去了,然后报一个错
-
- 帖子: 38
- 注册时间: 2008-09-05 23:13
Re: [请教] 求编译程序的简单办法
随便说说,我也没试过。
如果写makefile呢?
如果写makefile呢?
-
- 帖子: 68
- 注册时间: 2009-01-09 1:04
Re: [请教] 求编译程序的简单办法
给点儿详细的资料吧,网址什么的也行,我现在还不知道什么是makefile呢
-
- 帖子: 38
- 注册时间: 2008-09-05 23:13
Re: [请教] 求编译程序的简单办法
关于makefile可以参考论坛的wiki http://wiki.ubuntu.org.cn/index.php?tit ... iant=zh-cn
关于bash脚本可以参考 《高级Bash脚本编程指南》 网上可以下载,在线版本: http://pangty.ta139.com/bash-guide/abs3.7cnhtm/
我对makefile和bash脚本也不熟,对于楼主的问题我会这样做:
假设我的工作流程是:
两个fortran文件 fem01.f90 和 fem01mod.f90 其中 fem01mod.f90 包含 module,两个文件编译生成fem01,fem01会输出一个结果文件 result.txt,用gnuplot 把数据画出来。写两个脚本,一个plot.gnu用于gnuplot绘图,一个makefile用于编译程序并调用gnuplot画图。
plot.gnu这样写,直接把图形输出到文件,不显示出来:
makefile就这样写:
在命令终端输入 make 就可以编译程序,输入 make test 会运行程序并调用gnuplot绘图,输入 make clean 会清理多余的文件。
楼主说编译工作还没结束gnuplot就运行了,我没碰到过,可能我的程序太小,编译起来很快,bash中可以通过$?判断上一条命令是不是顺利结束了,我举个例子,楼主可以参考《高级Bash脚本编程指南》第六章 退出和退出状态
下面这个脚本会清理文件,重新编译,如果编译成功就绘图
关于bash脚本可以参考 《高级Bash脚本编程指南》 网上可以下载,在线版本: http://pangty.ta139.com/bash-guide/abs3.7cnhtm/
我对makefile和bash脚本也不熟,对于楼主的问题我会这样做:
假设我的工作流程是:
两个fortran文件 fem01.f90 和 fem01mod.f90 其中 fem01mod.f90 包含 module,两个文件编译生成fem01,fem01会输出一个结果文件 result.txt,用gnuplot 把数据画出来。写两个脚本,一个plot.gnu用于gnuplot绘图,一个makefile用于编译程序并调用gnuplot画图。
plot.gnu这样写,直接把图形输出到文件,不显示出来:
代码: 全选
set terminal png
set output "x.png"
plot "result.txt" using 1:2
makefile就这样写:
代码: 全选
FORTRAN = gfortran
fem01: fem01mod.o fem01.o
$(FORTRAN) fem01.o fem01mod.o -o fem01
fem01.o: fem01.f90
$(FORTRAN) -c fem01.f90
fem01mod.o: fem01mod.f90
$(FORTRAN) -c fem01mod.f90
test:
./fem01
gnuplot plot.gnu
clean:
rm fem01.o fem01mod.o fem01 fem01mod.mod result.txt
楼主说编译工作还没结束gnuplot就运行了,我没碰到过,可能我的程序太小,编译起来很快,bash中可以通过$?判断上一条命令是不是顺利结束了,我举个例子,楼主可以参考《高级Bash脚本编程指南》第六章 退出和退出状态
下面这个脚本会清理文件,重新编译,如果编译成功就绘图
代码: 全选
#! /bin/bash
#如果已经有编译生成的文件,删除它们
if [[ -e fem01 ]]
then make clean
fi
#编译
make
#当上一步运行成功后才运行以下语句
if [[ $? = 0 ]]
then make test
fi
-
- 帖子: 68
- 注册时间: 2009-01-09 1:04