问题标签 [g77]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3200 浏览

fortran - Fortran 中的实数与整数

我有一个程序循环一个变量并在每一步计算一个值:

在我的第一次尝试中,我用作iT整数循环计数器,然后在公式中直接使用它。这产生了iT>的分段图ic8t。当我添加i为计数器并iT在公式中使用它之前转换为实数时,图表应该是平滑的。为什么iT在插入公式时是实数还是整数很重要?我的编译器是g77。

iT编辑:该公式也为<提供了一些不准确的值ic8t

0 投票
1 回答
264 浏览

dll - 在 g77 中使用 DLL

我正在使用旧的 g77 编译器 (http://people.tamu.edu/~matthewmccleskey/g77.html),但似乎无法找出如何在我的代码中使用外部 DLL。甚至有可能,还是我必须获得更新的编译器?

我有 DLL 和 LIB 文件。该函数名为 GetDBI (_GetDBI@32)。

甚至可以在 fortran 77 中使用 DLL 吗?

0 投票
1 回答
314 浏览

linux - g77 3.2 版使用 -finit-local-zero 选项创建大型目标文件

我正在使用需要 g77 3.2.x 才能成功编译和运行的遗留 + 学术 + 数字 fortran-77 代码......我在 Red Hat Linux 9 for i386 上使用该编译器

其中一个 fortran-77 文件定义了一个子例程,其中包含许多实数、整数和双精度数组作为局部变量……如果我使用以下方法编译它:

它会生成一个大小约为 10kB 的目标文件......但如下:

生成大小为 14MB 的目标文件

我尝试strip了目标文件,但大小没有太大变化

代码中有几十个这样的文件,可执行二进制文件最终大小为 200MB

知道发生了什么吗?更重要的是,我能做些什么来恢复更健全的对象/二进制大小?

PS:当我将 200MB 二进制文件压缩到 tar.gz 中时,tarball 小于 1 MB ......这意味着 200MB 可能充满了 0 或其他东西(我可以在十六进制编辑器中打开它,但我觉得太懒了现在)

PS:编译器细节如下(使用g77的-v标志)

编辑:较新的 g77/gfortran 版本没有这个问题(目标文件大小与 -finit-local-zero 几乎保持相同)但我不能使用它们(使用最新的编译器版本使代码产生正确的结果将是项目本身)......我需要 -finit-local-zero 标志(没有它的代码挂起)

编辑 2:我进行了十六进制转储,果然 99% 的文件由零组成!

0 投票
2 回答
1313 浏览

numpy - 确定哪个编译器构建了我的 LAPACK

我想安装最新版本的numpy(Python 的数值库),并且版本(v1.6.1)还没有在Ubuntu Oneiric 存储库中。当我继续手动安装它时,我读入了需要使用与构建相同的编译器构建的INSTALL文件(由 使用的 fortran 库)。不幸的是,我不知道那是哪个编译器。我没有安装自己 -当我使用. 如果我不得不猜测,我会说,但我宁愿不要把这件事搞砸。numpyLAPACKnumpyLAPACKapt-getnumpyaptgfortran

如何确定哪个编译器构建了我当前的安装LAPACK?有什么简单的方法 - 也许运行一些使用它的 fortran 代码并检查输出?

谢谢!

0 投票
0 回答
453 浏览

libraries - gfortran 中的 f77 代码 - 库调用

我从以前的研究人员那里继承了一个旧的 f77/g77 程序,但对 Fortran 的经验很少。我已经完成了文件中的大部分语法转换,但我遇到了一个问题,即旧文件调用了一个名为libstr的(已弃用?)库。我似乎在任何当前的 gfortran 文档中都找不到对此的参考(尽管我也不确定我是否在寻找正确的地方)。我想知道的是是否有办法避免调用Unionand flostr函数,而是直接在文件中输出值。

代码的相关部分在这里:

我想要么弄清楚如何安装库(我尝试运行 makefile,并且 gfortran 在其搜索路径中查看 /usr/bin),要么能够替换函数将解决问题。我在 OS X 10.8.3 上使用从 Homebrew 安装的 gfortran 4.8。

谢谢!

更新:

我通过在 gfortran 编译中包含库成功地编译了代码,但是现在运行输出程序会导致一串错误......</p>

输出错误是:

回到绘图板。

0 投票
0 回答
261 浏览

numpy - f2py:在 Windows 中的 numpy 中缺少 limit.h 文件

我在使用 f2py 和 g77 编译器编译一些 FortranIV 代码时遇到问题。我需要这样做才能将一些用 Fortran 编写的非常古老的代码调用到已经存在的 Python 模块中。我通过 MinGW 安装了 gcc,但我不确定这是否有任何区别。我也在运行带有 Numpy 1.7 和 SciPy 0.12 的 Python 2.7。我的操作系统是 Windows7 x64,但我确保我所有的安装都是 32 位版本。我是 Python、Fortran 和这个论坛的新手,所以请多多包涵。使用 f2py 编译代码时出现的错误如下:

为了隔离问题,我使用了与 gfortran 编译器兼容的测试代码。我使用 '-c –compiler 调用所需的编译器。该测试与您的基本“Hello World”在同一行。对于真实代码和测试代码,抛出的错误是相同的。我查找了错误的文件“npy_common.h”,发现第 291 行调用包含标题:limits.h。由于错误发生在 Numpy 库中,我假设错误与 Numpy 相关?我似乎无法弄清楚为什么会发生此错误。

0 投票
0 回答
1267 浏览

cygwin - 在 Windows cygwin 上使用 g77 制作可执行文件的问题

我在让 g77 生成将在 MS Windows 中的 cygwin 上运行的可执行文件时遇到问题。编译器为 MS Windows 生成一个 PE32 可执行文件,但是当我尝试运行该程序时出现cannot execute binary file错误。

在带有 cygwin 1.7.15 的 Intel i7 cpu 上运行 MS windows 7,并在 gcc 版本 3.4.4 下使用 g77 编译。

0 投票
2 回答
581 浏览

fortran - 使用 g77 编译 Fortran 时遇到问题

我正在尝试编译一些在我的工作中使用 g77 的旧 Fortran 代码。我是 Fortran 和一般编程的新手,我正在尝试解决所有错误。这是 g77 正在返回的:

如果我理解正确,这与以下代码片段中使用的 Hollerith 常量有关:

我已经尝试了一些东西,用字符语句替换 Holleriths 等,但我认为我遗漏了一些东西。我将不胜感激有关如何进行的任何建议。

编辑 - -

是一个名为“SW”的子程序的一部分,它计算土壤水分的有效性。然后在绘图子程序“plot”中初始化 BLANK。

0 投票
1 回答
254 浏览

fortran - 在 gfortran 和 g77 编译的代码之间写入/读取控制台时的差异

这需要一点解释。请多多包涵。

我有的

我拥有一些 Fortran 源代码和一些从该代码编译的二进制文件。我没有进行编译,但是有一个构建脚本建议使用 G77 来进行编译。

除了 Fortran 的东西,还有一些 Java 代码为用户提供了一个围绕二进制文件的 GUI“包装器”。它通过输入/输出/错误管道在自身和二进制文件之间传递信息。Java 代码非常混乱,这种处理方式增加了很多样板文件和冗余,但它完成了工作,我知道它有效。

我需要的

不幸的是,我想做一些改变:

  1. 我想为二进制文件创建一个新的 Python 包装器(或者,更准确地说,扩展现有的 Python 程序以成为新的包装器)。

  2. 我希望能够将 Fortran 代码编译为现有程序构建过程的一部分。我想为此使用 gfortran,因为 MinGW 在构建中的其他地方使用,因此很容易获得。

问题

当我使用 gfortran 自己编译 Fortran 代码时,我无法让生成的二进制文件与当前的 Java 包装器或我的新 Python 包装器“对话”。

以下是我在 Fortran 代码中尝试过的各种打印到控制台的方法:

还有一些read命令,但是代码甚至没有更改来执行该部分,所以我还不担心。

额外信息

  • 我必须用-ffixed-line-length-132标志调用 gfortran 以便代码编译,但除此之外我不使用其他任何东西。我曾尝试-ff2c模糊地使用该标志,希望它会有所作为。它没有。

  • 这篇stackoverflow 帖子内容丰富,但没有为我提供任何有用的信息。

  • 相关手册页表明 printA 应该可以正常工作。

  • 我在 Windows 上工作,但需要它是多平台的。

  • 如果您进行了测试,Java 代码会使用Runtime.getRuntime().exec("prog.exe")调用二进制文件,然后调用结果Process对象的各种“流”方法来与它们通信。Python 代码使用模块Popen对象提供的等效项。subprocess

  • 我还应该说,我知道还有其他选择。用 Python(或其他类似 C++ 的东西)重写代码,或进行修改以便可以通过 F2Py 调用已被排除在选项之外。使用 g77 也是不行的;我们有足够的依赖关系。我希望能够使用 gfortran 正确地从控制台写入/读取,或者知道这是不可能的。

0 投票
0 回答
414 浏览

dll - 构建 FORTRAN DLL

我想通过在 Windows 中使用 g77 编译器从以下 fortran77 代码创建一个 dll。

示例 FORTRAN 代码

测试.f

我使用了以下命令

但它给出了一个错误说

截屏

或者我下载了 Mingw 并尝试使用 gfortran.exe 做同样的事情

成功创建了test.dll。

我的要求是使用 g77 创建 dll,但我得到了这个“无法识别的选项 `-shared'”

请帮忙。