爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 51365|回复: 79

[混合编程] 不一样的fortran编译体验:codeblocks+gfortran安装及运行笔记

  [复制链接]

新浪微博达人勋

发表于 2013-7-2 23:55:17 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 平流层的萝卜 于 2013-7-3 11:41 编辑

Codeblocks软件是大学用过,同学给的一软件,可以写c语言,用于准备计算机考试。后来听说可以加载gfortran编译器,同样可以写fortran代码,这两天在网上按照安装教程安装了一下,并运行了一些程序,证明是其功能基本和visual fortran无二致。对于想换换口味的童鞋们,Codeblocks+gfortran是不错的选择。
先上一张效果图:
QQ截图20130701190457.png QQ截图20130701191042.png
相对visual fortran来说,codeblocks+gfortran(简称CBGF吧)编译界面比较新颖,语法高亮更美观,且可以读大数组文件(后面会提到360*181*1464这样的x*y*t三维数组VF会嫌太大,压根读不了,而CBGF可以读,只不过时间会稍长一些)。
下面,主要分享一下我的安装过程:
1、首先到codeblock网站http://darmar.vgtu.lt/downloads下载fortran版的codeblock安装文件:
QQ截图20130701190839.png

之后解压即可,我将其解压在了d:\fortran\下(下边的文件都会放在此文件夹中)。
2、其次下载windows的GNU fortran编译器:http://gcc.gnu.org/wiki/GFortranBinaries/
QQ截图20130701192208.png
点选红框内的下载选项即可。下载的是一个可执行文件,双击运行,将安装路径设在d:\fortran 。这样,在d:\fortran下就会有如下的文件。文件准备就齐全了。准备的安装文件还是很小巧的,加一起80多兆的样子,比VF小。
QQ截图20130701192521.png
3、配置路径。就是把gfortran编译器安装到codeblock这个编译平台上,有点像安装了一个lingoes翻译软件,但是得下载扩充词库并把词库安装到词典里,才能调用这个词库查词,两者比较类似。
打开codeblock,一路ok,然后在顶部工具栏点setting,在selected compiler里选择GNU fortran compiler,然后在下边一栏里选择 toolchain executable,
选择路径d:\fortran(或者点击auto-detect,下边的会自动配置好),下边的program files一栏里,需要改前三行,手动改成gfortran.exe。在最后一栏make program里,改为make.exe。ok退出。
QQ截图20130701202508.png
4、这样就可以编写fortran脚本了,测试一下脚本程序:
随便创建一个txt,把后缀名改成f90,用codeblocks打开(如果一开始运行codeblocks的时候设置了文件关联,默认的f90打开方式就为codeblocks,或者在codeblock里边打开,点击new---->project--->Fortran application,类似visual fortran的创建方式。)输入代码并点击左上角的build---->run,或直接点build and run选项。
QQ截图20130701203731.png
运行正常,搞定了。
5、关于CBGF和VF的二进制文件(如grd)读写问题:
VF和CBGF在读写二进制文件的时候有所差异,可能是gfortran编译器区别于ifortran的缘故,在@loftydongshi童鞋的提醒和kongfeng0824http://bbs.06climate.com/forum.php?mod=viewthread&tid=12412&page=1#pid176954的给力启发下,发现是recl的问题。gfortran在这一点上,没有VF简洁。
这里给出我写的一个典型的二进制grd文件的CBVF典型读法,以此类推,可用此读其他一切grd了。
parameter(nx=360,ny=181,nt=1464)
real:: u(nx,ny,nt)
integer :: i,j,recl1
recl1=nx*ny*nt*4
open(11,file='2007_2012_Jun_Jul_u.grd',form='unformatted',access='direct',status='old',recl=recl1)
!open(12,file='text.txt',form='formatted')
read(11,rec=1) (((u(i,j,k),i=1,nx),j=1,ny),k=1,nt)
open(12,file='u11.txt')
do k=1,2
    do j=1,ny
        write(12,100) (u(i,j,k),i=1,nx)
    enddo
enddo
close(11)
100 format(360f8.2)
end program

程序用来全部读取一个360*181*1464大小的u风场grd文件,并按格式输出前2个时次的风场到txt中,需要用记录recl方法直接读取。recl用法参见kongfeng0824的帖子。此处CBGF读取如此庞大的grd并输出用了21.904s时间,而VF根本无法读取,这应该是CBGF的优点之一。输出文件为下图,格式内容均正常。
QQ截图20130702233541.png
CBGF还是不错的~~,欢迎交流和指正!
PS:我的电脑是xp系统,win7的不知是否运行顺利,欢迎交流。这是网上的简英文安装教程:https://docs.google.com/file/d/1n5a91xiRR-LDm1xFC0MgCWn3QJ8sYHX0bz1GZ7cZo_BuYOxNYESpQfoIz8N9/edit?pli=1
英文好的同学可以直接看原版。

评分

参与人数 5金钱 +55 贡献 +16 体力 +280 收起 理由
fengizhui + 2 淡定
Aires + 18 + 6 + 80
mofangbao + 15 + 6 不错
topmad + 10 + 2
兰溪之水 + 10 + 2 + 200

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-3 00:01:15 | 显示全部楼层
本帖最后由 平流层的萝卜 于 2013-7-3 00:33 编辑

后边两张图怎么又删不了了?→_→
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-3 00:08:39 | 显示全部楼层
嗯,值得一试,谢谢楼主的介绍啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-3 07:03:49 | 显示全部楼层
感谢楼主分享,fortran迷的福音!!!!!!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-3 08:10:23 | 显示全部楼层

在贴图附件管理的里面把图片删掉就可以了

萝卜昨天弄了挺多时间的吧  昨天看此贴还没有弄好
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-7-3 08:24:51 | 显示全部楼层
平流层的萝卜 发表于 2013-7-3 00:01
后边两张图怎么又删不了了?→_→

要编辑帖子的时候点击图片的按钮 然后从那里面删掉就行了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-7-3 08:25:11 | 显示全部楼层
topmad 发表于 2013-7-3 08:10
在贴图附件管理的里面把图片删掉就可以了

萝卜昨天弄了挺多时间的吧  昨天看此贴还没有弄好

你还不给分。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-3 08:30:18 | 显示全部楼层
不错的教程啊,这下就有多了一个选择了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-3 09:24:16 | 显示全部楼层
{:eb502:}{:eb502:}
如果要是win7的能用那就更好了!
已经隐忍着用了大半年c++。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-3 09:49:05 | 显示全部楼层
good job
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表