[请教] 求编译程序的简单办法

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
funny8
帖子: 68
注册时间: 2009-01-09 1:04

[请教] 求编译程序的简单办法

#1

帖子 funny8 » 2009-01-13 23:08

我要编译和运行fortran程序
现在的做法是:
1、使用gedit编写程序,保存为a.f95
2、终端执行命令:gfortran a.f95 生成:a.out文件
3、终端执行 ./a.out 得到输出
4、终端执行gnuplot,在fnuplot里画图

这个过程太麻烦了,linux下还没有fortran 的集成编译软件

有简单的办法吗?
funny8
帖子: 68
注册时间: 2009-01-09 1:04

Re: [请教] 求编译程序的简单办法

#2

帖子 funny8 » 2009-01-14 11:12

自己顶一下,大家也这么做得话,也可以告诉我一声
BBT4XD
帖子: 38
注册时间: 2008-09-05 23:13

Re: [请教] 求编译程序的简单办法

#3

帖子 BBT4XD » 2009-01-14 11:19

可以试试写个shell脚本,一次性执行四个步骤。
funny8
帖子: 68
注册时间: 2009-01-09 1:04

Re: [请教] 求编译程序的简单办法

#4

帖子 funny8 » 2009-01-14 11:26

写过一个类似的脚本,但是,发现缺乏同步,往往编译过程还没有结束,脚本就运行过去了,然后报一个错
BBT4XD
帖子: 38
注册时间: 2008-09-05 23:13

Re: [请教] 求编译程序的简单办法

#5

帖子 BBT4XD » 2009-01-14 11:36

随便说说,我也没试过。
如果写makefile呢?
funny8
帖子: 68
注册时间: 2009-01-09 1:04

Re: [请教] 求编译程序的简单办法

#6

帖子 funny8 » 2009-01-14 18:21

给点儿详细的资料吧,网址什么的也行,我现在还不知道什么是makefile呢
BBT4XD
帖子: 38
注册时间: 2008-09-05 23:13

Re: [请教] 求编译程序的简单办法

#7

帖子 BBT4XD » 2009-01-15 10:26

关于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这样写,直接把图形输出到文件,不显示出来:

代码: 全选

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
在命令终端输入 make 就可以编译程序,输入 make test 会运行程序并调用gnuplot绘图,输入 make clean 会清理多余的文件。

楼主说编译工作还没结束gnuplot就运行了,我没碰到过,可能我的程序太小,编译起来很快,bash中可以通过$?判断上一条命令是不是顺利结束了,我举个例子,楼主可以参考《高级Bash脚本编程指南》第六章 退出和退出状态
下面这个脚本会清理文件,重新编译,如果编译成功就绘图

代码: 全选

#! /bin/bash
#如果已经有编译生成的文件,删除它们
if [[ -e fem01 ]]
then make clean
fi
#编译
make
#当上一步运行成功后才运行以下语句
if [[ $? = 0 ]]
then make test
fi
funny8
帖子: 68
注册时间: 2009-01-09 1:04

Re: [请教] 求编译程序的简单办法

#8

帖子 funny8 » 2009-01-15 14:42

称谢~
回复