问题标签 [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.
fortran - Fortran 中的实数与整数
我有一个程序循环一个变量并在每一步计算一个值:
在我的第一次尝试中,我用作iT
整数循环计数器,然后在公式中直接使用它。这产生了iT
>的分段图ic8t
。当我添加i
为计数器并iT
在公式中使用它之前转换为实数时,图表应该是平滑的。为什么iT
在插入公式时是实数还是整数很重要?我的编译器是g77。
iT
编辑:该公式也为<提供了一些不准确的值ic8t
。
dll - 在 g77 中使用 DLL
我正在使用旧的 g77 编译器 (http://people.tamu.edu/~matthewmccleskey/g77.html),但似乎无法找出如何在我的代码中使用外部 DLL。甚至有可能,还是我必须获得更新的编译器?
我有 DLL 和 LIB 文件。该函数名为 GetDBI (_GetDBI@32)。
甚至可以在 fortran 77 中使用 DLL 吗?
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% 的文件由零组成!
numpy - 确定哪个编译器构建了我的 LAPACK
我想安装最新版本的numpy
(Python 的数值库),并且版本(v1.6.1)还没有在Ubuntu Oneiric 存储库中。当我继续手动安装它时,我读入了需要使用与构建相同的编译器构建的INSTALL文件(由 使用的 fortran 库)。不幸的是,我不知道那是哪个编译器。我没有安装自己 -当我使用. 如果我不得不猜测,我会说,但我宁愿不要把这件事搞砸。numpy
LAPACK
numpy
LAPACK
apt-get
numpy
apt
gfortran
如何确定哪个编译器构建了我当前的安装LAPACK
?有什么简单的方法 - 也许运行一些使用它的 fortran 代码并检查输出?
谢谢!
libraries - gfortran 中的 f77 代码 - 库调用
我从以前的研究人员那里继承了一个旧的 f77/g77 程序,但对 Fortran 的经验很少。我已经完成了文件中的大部分语法转换,但我遇到了一个问题,即旧文件调用了一个名为libstr的(已弃用?)库。我似乎在任何当前的 gfortran 文档中都找不到对此的参考(尽管我也不确定我是否在寻找正确的地方)。我想知道的是是否有办法避免调用Union
and flostr
函数,而是直接在文件中输出值。
代码的相关部分在这里:
我想要么弄清楚如何安装库(我尝试运行 makefile,并且 gfortran 在其搜索路径中查看 /usr/bin),要么能够替换函数将解决问题。我在 OS X 10.8.3 上使用从 Homebrew 安装的 gfortran 4.8。
谢谢!
更新:
我通过在 gfortran 编译中包含库成功地编译了代码,但是现在运行输出程序会导致一串错误......</p>
输出错误是:
回到绘图板。
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 相关?我似乎无法弄清楚为什么会发生此错误。
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 编译。
fortran - 使用 g77 编译 Fortran 时遇到问题
我正在尝试编译一些在我的工作中使用 g77 的旧 Fortran 代码。我是 Fortran 和一般编程的新手,我正在尝试解决所有错误。这是 g77 正在返回的:
如果我理解正确,这与以下代码片段中使用的 Hollerith 常量有关:
我已经尝试了一些东西,用字符语句替换 Holleriths 等,但我认为我遗漏了一些东西。我将不胜感激有关如何进行的任何建议。
编辑 - -
是一个名为“SW”的子程序的一部分,它计算土壤水分的有效性。然后在绘图子程序“plot”中初始化 BLANK。
fortran - 在 gfortran 和 g77 编译的代码之间写入/读取控制台时的差异
这需要一点解释。请多多包涵。
我有的
我拥有一些 Fortran 源代码和一些从该代码编译的二进制文件。我没有进行编译,但是有一个构建脚本建议使用 G77 来进行编译。
除了 Fortran 的东西,还有一些 Java 代码为用户提供了一个围绕二进制文件的 GUI“包装器”。它通过输入/输出/错误管道在自身和二进制文件之间传递信息。Java 代码非常混乱,这种处理方式增加了很多样板文件和冗余,但它完成了工作,我知道它有效。
我需要的
不幸的是,我想做一些改变:
我想为二进制文件创建一个新的 Python 包装器(或者,更准确地说,扩展现有的 Python 程序以成为新的包装器)。
我希望能够将 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 正确地从控制台写入/读取,或者知道这是不可能的。
dll - 构建 FORTRAN DLL
我想通过在 Windows 中使用 g77 编译器从以下 fortran77 代码创建一个 dll。
示例 FORTRAN 代码
测试.f
我使用了以下命令
但它给出了一个错误说
或者我下载了 Mingw 并尝试使用 gfortran.exe 做同样的事情
成功创建了test.dll。
我的要求是使用 g77 创建 dll,但我得到了这个“无法识别的选项 `-shared'”
请帮忙。