GSFLOW模型的Codeblocks编译

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) 所有问题就搞定了。

Updated: 2019-06-14 — pm3:06

Leave a Reply

  Subscribe  
Notify of