张凌
GSFLOW模型的Codeblocks编译
2018-10-1 16:12
阅读:4991

 

GSFLOW提供makefile文件,可以在linux系统下编译成功,采用msys虚拟linux系统可成功通过编译(赵彦博帮忙完成)。

然而,我想在windows下编译,并且我想在windows下进行调试。

这里有两种途径,一种是对makefile进行解析,弄清GSFLOW各个模块直接的关联和依赖关系,然后进行顺序编译,然后这不能实现所以模块一起编译,且不同模块如果要改代码,则需要写调试函数,否则不能调试,因为mmf, modflow以及prms模块都编译出lib,然后实现模型耦合,生产gsflow.这个途径显然麻烦。

另一种途径,就是直接在codeblocks下编译linux代码。这里首先要找到虚拟linux系统,且能被codeblocks系统支持,我最后锁定为cygwin,因为正好codeblocks支持。

(1)首先下载cygwin并安装,安装make, gcc gfortran等。

(2) 在codeblock配置编译环境及编译器。需要注意的是,这里配置的编译器,是选择的mingw,而不是cygwin自带的,这是因为mingw与windows系统更兼容。

(3) 配置makefile文件,需要注意的是下面第二个图中,要删掉所以$target字符。

(4)然后执行编译,但是我们发现一个错误。错误是在建立文件然连接时候出现的,cygwin采用ln -s不能建立软链接,因此我把它改为硬连接。从而通过编译

(5) 以上就是cygwin codebocks编译的完成步骤,这里还要进行调试,首先要为cygwin下载调试器gdb.exe,然后建立cygwin调试器配置,如下图。

(6)下面这个问题搞了我很久,那就是cygwin不认识window路径,因此在编译的时候,老提示找不到编译文件。这时候,我在网上找了好久的办法,最好找到了,就是在windows下的路径添加cgydrive之后,cygwin才能识别,通过修改注册表可以实现,具体参考如下的内容:

http://forums.codeblocks.org/index.php/topic,13791.0.html

https://blog.csdn.net/u011589289/article/details/81944643

(7)这下我以为ok了,然后事实上,我又搞了好久,原因是makefile里配置的编译器参数不对,要进行调试,需要将参数改为 -g, 如果下OPTLEVLE = -g, 而编译 为- O

(8) 所有问题就搞定了。


转载本文请联系原作者获取授权,同时请注明本文来自张凌科学网博客。

链接地址:https://wap.sciencenet.cn/blog-922140-1138246.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?