我正在尝试将一些非常古老的fortran代码移植到Windows。我想使用mingw和f2c,在OS X和Ubuntu上将代码转换为可用的C没有问题。我在全新安装的mingw上使用netlib分发的f2c.exe,它将代码转换得很好。我有一个“移植”版本的libf2c似乎仍然包含一些未解析的引用 - 主要是文件i / o例程(do_fio
,f_open
,s_wsfe
,e_wsfe
)并且,特别是一个算术例程(pow_dd
)。为了解决这些问题,我尝试从source构建libf2c,但在make过程中遇到了一个问题。 make继续进行dtime_.c
,但由于依赖sys/times.h
而失败,struct
不再是mingw发行版的一部分。 times.h
中定义的dtime_.c
似乎定义了t
中变量的大小,特别是第53和54行的t0
和t0
(错误)是“'t'的存储大小未知”; makefile
相同。
libf2c.a
被修改为使用gcc,并在没有传递其他选项的情况下调用。
可能有人知道这个问题的解决方法吗?我有信心,一旦我有一个正确编译的libf2c,我将能够将它与gcc链接,代码将像在linux和os X上一样工作。
后续行动:我能够通过在makefile
中注释时间相关文件来构建sys/times.h
(我的代码不包含任何与时间相关的功能,所以不要认为这很重要。我将它复制到非POSIX搜索目录,如-print-search-dirs中所示,特别是C:\ MinGW \ lib \ gcc \ mingw32 \ 3.4.5。这似乎解决了未解决的引用问题,尽管消除时间文件的需要确实让我感到担忧。虽然我的代码现在正在运行,但最初的问题是 - 如何处理在mingw中调用{{1}}的makefile?
答案 0 :(得分:0)
您确定MinGW安装是否正确?据我所知,sys/times.h
标题仍在那里,在mingwrt-3.18-mingw32-dev.tar.gz
包中。我不熟悉gui安装程序,但也许你必须在mingwrt dev
组件的方框中打勾。