问题标签 [photran]

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 投票
2 回答
648 浏览

eclipse-cdt - Photran 编辑器运行缓慢或挂起

我在 Photran 有一个相当大的 fortran90 项目。我发现有时编辑器只是挂起或很慢。保存文件或使用 ctrl+/ 注释行似乎会触发这种缓慢。有什么解决办法吗?

我确实打开了重构,因为我发现它对导航很有用,关闭它似乎对一些人有所帮助。还有其他解决方案吗?

我在 linux 操作系统上使用 eclipse-Galileo,photran 5.0。我有 jdk 6 作为我的 java 环境。更新到 Helios 和后来的 photran 会有所不同吗?更新到 Helios 容易吗?

编辑:刚刚检查了顶部,当我尝试保存文件时,cpu 正在 100% 工作!我什至关闭了重构。

0 投票
1 回答
667 浏览

debugging - 如何调试 Fortran 程序

我正在尝试编译以下软件,以便我可以逐步调试它。我只是一个新手程序员,我试图了解整个 makefile 业务如何与 Fortran 一起工作。我知道有大量关于 makefile 的文献,但我只需要插入一个简单的调试标志,我认为如果有人为我提供了这个问题的答案,那将是我学习的最佳方式。

所以我要编译的程序 TINKER 实际上是由几个包组成的,位于http://dasher.wustl.edu/tinkerwiki/index.php/Main_Page。我想编译和调试一个特定的可执行文件,“分析”。我联系了开发人员并收到了以下回复,但我仍然卡住了......

由于 TINKER 有很多小的源代码文件,我们所做的就是使用“-c”标志将每个小文件编译成一个目标文件。然后我们将所有这些目标代码文件(即“.o”文件)放入一个目标库中。最后,我们将每个 TINKER 顶级程序(例如“分析”)链接到对象库。TINKER 提供了一个 Makefile 来执行此操作。我们还为各种 CPU/编译器组合提供名为“compile.make”、“library.make”和“link.make”的单独脚本,可以运行这些脚本以执行我上面描述的步骤。要构建“可调试”可执行文件,您只需在编译和链接阶段包含适当的调试标志(通常是“-g”)。

我目前正在运行 OSX 10.6.8。如果有人可以告诉我我 cd 进入了哪些文件夹,我输入的命令会非常棒!

谢谢!

我的后续问题(一旦我知道如何通过命令行回答上述问题,将关注如何导入相同的程序但使用 Photran IDE - http://wiki.eclipse.org/PTP/photran/documentation/photran5# Starting_a_Project_with_a_Hand-Written_Makefile )

0 投票
4 回答
11061 浏览

fortran - 为 Fortran 使用 Eclipse

我在这里有一个关于如何为 Fortran 设置 Eclipse 的简短问题。

我已经下载了“Photran”(Eclipse 的 Fortran 工具)并安装了它。我遇到的问题是,每次我尝试运行一个程序时,我都会收到一条消息,上面写着"Launch failed. Binary not found." 然后,我发现你必须先“构建”文件,所以当我尝试这样做时,我收到一条消息显示以下内容的控制台:

有人对如何使它工作有任何指示吗?

0 投票
2 回答
1335 浏览

eclipse - 如何在 Eclipse 中使用 Photran IDE 设置断点?

我知道这听起来像一个简单的问题,但尝试创建一个简单的“Hello World!” 使用 GDB 进行应用程序和调试似乎没有给我创建断点的选项。有没有其他人看到这个?有什么我想念的吗?

最近在 bugzilla 中提交了一个错误。但我想确保问题不仅仅是我缺少一些必要的设置或插件。

更新: 此错误已针对 Juno SR2 修复

0 投票
1 回答
3230 浏览

eclipse - 在 Eclipse-Photran 中为 Windows 上的 fortran 编译器配置 LAPACK

更新

感谢 Vladimir 对图书馆的有用见解。我采取了另一种方法,首先在 ubuntu 中进行开发(这比使用 Eclipse/Cygwin/ 搞砸要容易得多……现在我正在尝试移植到 Windows,这还不错,但是我对此也有一些疑问,张贴在这里:将 fortran 程序从 ubuntu 移植到 windows 的问题

问题

我目前有以下设置,无法配置 lapack 库,以便我的 fortran 代码可以编译:

  • Windows 7的
  • Cygwin 安装(用于 GNU fortran),添加到 windows PATH
  • 使用 cygwin 安装的 lapack 和 liblapack-devel
    • 导致文件夹 C:/cygwin/lib 中的 liblapack.a 和 libblas.a

在我的程序中,我使用以下代码调用 lapack 库

在 Eclipse 中,我使用了以下设置(使用 Photran 包):

  • Fortran 项目:Windows 上的可执行 GNU fortran(GCC 工具链)
  • GNU fortran 编译器:gfortran ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
  • GNU fortran 链接器:gfortran ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}

我编译了库 libblas.a 和 liblapack.a,用作 Windows 的静态库,它们位于 C:/cygwin/lib 文件夹中。在 GNU fortran 链接器属性中,库被调用lapack并且blas在文件夹中C:/cygwin/lib。这导致编译器和链接器部分-L"C:/cygwin/lib" -llapack -lblas中的一部分。{$COMMAND}(感谢@vladimir-f 的帮助)

在输出中不再有错误消息。只有我现在在 Eclipse 中得到以下错误,并且没有最终的 .exe 或 bins:

但是,构建的结果仍然是一个可执行文件,在本例中称为 Hamfem.exe。运行此文件会导致错误消息(而不是例程):The program can't start because cyglapack-0.dll is missing from your computer. Try reinstalling the program to fix this problem.

该文件当前位于C:/cygwin/lib/lapack/但我希望运行该程序不需要该文件,因此我可以在不同的计算机上运行它。有人可以合作吗?

其次,将 .dll 文件复制粘贴到 .exe 所在的文件夹中时,它会运行一秒钟,生成一个 stackdump 文件。由于“构建工作区”错误,我无法在 Eclipse-Photran 中使用调试器。Binary not found当我想在 Eclipse 中将它作为本地 Fortran 程序运行时,Eclipse 会给出消息。任何想法如何解决这个问题?

0 投票
1 回答
3514 浏览

eclipse - 使用 Photran 和 GDB 调试器在 Eclipse 中调试 fortran 代码:缺少符号

我有一个用 fortran90 编写的程序,以前在 compaq 编译器上成功编译并工作,现在我正在尝试用 gfortran 编译。我可以将代码编译为 .exe 并运行它。它工作正常,直到例程中的某个点然后引发错误。

我目前的配置:

  • Windows 7的
  • 带有 CDT 的 Eclipse Juno
  • 光腾
  • 使用 gfortran 编译器和 GDB 调试器 (gdb.exe) 安装 Cygwin
  • 调试器的配置:
    • GDB 命令集:标准 (Windows)
    • 协议:mi
    • 共享库:不要自动加载共享库符号(激活此功能时,不会记录任何更改)。

运行调试命令时,我得到以下输出:

基本上这给我留下了两个问题:

  1. 我在哪里可以找到 cygwin 安装中的 .gdbinit 文件?
  2. 我的设置中是否还有其他可能的错误,或者需要考虑的问题?
0 投票
1 回答
1060 浏览

eclipse - Eclipse Photran 不编译带有大写字母扩展名的源代码

根据 Photran 文档的理解,如果 Fortran 源代码的扩展名带有大写字母,例如 F90 或 F95,则在构建时会自动预处理此文件。但这对我不起作用...如果我尝试构建一个只有一个文件 main.F90 的项目:

然后 Photran 会说“Nothing to build for project xxx”。我在 Windows 和 Linux 上都尝试过 Photran 8 (Eclipse Juno) 和 GNU 编译器,我也在 Linux 上尝试过 Intel Fortran 编译器,所以它们都失败了。所以我猜这与Eclipse有关。我还可以确认“源表单”设置正确,即 *.F90 设置为“自由格式 - C 预处理”。任何帮助将非常感激。

0 投票
2 回答
5444 浏览

module - 如何在不复制源代码或创建库的情况下重用 Fortran 模块

在不构建库或复制源代码的情况下,我无法理解是否/如何在多个 Fortran 项目之间共享代码。

我在 Linux 系统上将 Eclipse/Photran 与英特尔编译器 (ifort) 一起使用,但我相信与特定工具相比,模块的概念问题更大。

这是一个简单的示例:在 ~/workspace/cow 我有一个源目录 (src),其中包含 cow.f90(程序)和两个模块 m_graze 和 m_moo,分别位于 m_graze.f90 和 m_moo.f90 中。该项目正确构建和链接以创建可执行的“cow”。可执行文件和模块(m_graze.mod 和 m_moo.mod)存储在 ~/workspace/cow/Debug 和目标文件存储在 ~/workspace/cow/Debug/src

之后,我创建了 ~/workplace/sheep,并将 src/sheep.f90 作为程序,将 src/m_baa.f90 作为模块 m_baa。我想在sheep.f90 中“仅使用m_graze:反刍”来访问rumate() 子例程。我可以只复制 m_graze.f90 但这可能导致代码不同步并且没有考虑 m_graze 可能具有的任何依赖项。由于这些原因,我宁愿将 m_graze 留在牛项目中,并针对它编译和链接sheep.f90。

如果我尝试编译绵羊项目,我会收到如下错误:

在属性:羊的项目参考下,我可以选择牛项目。在 Properties:Fortran Build:Settings:Intel Compiler:Preprocessor 下,我可以将 ~/workspace/cow/Debug(模块文件的位置)添加到包含目录列表中,因此编译器现在可以找到 cow 模块并编译sheep.f90。但是,链接器会因以下内容而死:

这通常可以通过将库和库路径添加到链接器设置来解决,除非没有适当的库可以链接(这是 Fortran,而不是 C。)

cow 项目完全有能力将 cow.f90、m_graze.f90 和 m_moo.f90 编译并链接到一个可执行文件中。然而,虽然sheep 项目可以编译sheep.f90 和m_baa.f90 并且可以找到模块m_graze.mod,但它似乎无法找到m_graze 的符号,即使系统上存在所有必要的信息以便它这样做.

让 ifort 的链接器部分找到丢失的部分并将它们放在一起似乎是一个简单的配置问题,但我不知道需要在 Photran UI 的哪个位置输入什么魔法词才能实现这一点。

我承认对 C 和 C 构建过程完全缺乏兴趣和能力,我宁愿避免创建库(.a 或 .so)的转移,除非这是完成这项工作的唯一方法。

最终,我正在寻找一个纯 Fortran 解决方案来解决这个问题,这样我就可以保留一份源代码副本,而不必手动维护一堆自定义 Makefile。

那么这可以做到吗?

如果这已经记录在某处,我们深表歉意;Google 只向我展示了简单的构建示例、如何创建模块以及如何与现有库链接。似乎没有(m)任何不涉及复制源代码的模块的代码重用示例。


编辑

正如受访者指出的那样,.mod 文件是必要的,但还不够;必须在链接阶段指定目标代码(以 m_graze.o 的形式)或静态共享库。.mod 文件描述了目标代码/库的接口,但两者都是构建最终可执行文件所必需的。

对于这样一个过于简单的玩具问题,这足以回答所提出的问题。

在具有更复杂依赖项的大型项目中(在我的例子中,F90 的 80+KLOC 链接到 LAPACK95 的 MKL 版本),IDE 或工具链可能缺乏足够的自动或用户界面设施来共享单个规范的源文件集一个可行的策略。选择似乎是在冒着重复源文件不同步的风险、放弃 IDE 的许多好处(即避免手动创建 make/CMake/SCons 文件)之间,或者很可能两者兼而有之。虽然修订控制系统和良好的代码组织可以提供帮助,但很明显,鉴于 Eclipse 的当前状态,在项目之间共享单个规范的源文件集绝非易事。

0 投票
2 回答
306 浏览

eclipse - 为什么 Eclipse 的 Photran 在“写入”之后需要“调用 flush(6)”以防止缓冲到标准输出?

我在 Windows 7 Professional 机器上使用带有 Photran 插件和 cygwin 的 gfortran 编译器的 Classic Eclipse 4.2.2。如果我删除下面的 'call flush(6)',则程序在从 std in 读取之前不会写入控制台:

有什么想法或修复吗?

0 投票
0 回答
410 浏览

eclipse - fortran:将 pgplot 与 eclipse photran 一起使用

所以我真的根本不是 Fortran 程序员,但我正在使用一些代码,这些代码使用 Fortran 中的 pgplot 图形库。我可以使用以下命令从控制台获取在 fortran 中运行的代码。

离散.f 是文件的名称。所以当我从控制台运行它时这有效。但是,我想在 eclipse photran 插件中运行代码,以便我可以使用调试器,以便我可以单步执行代码并观察一些变量。我试图将 -lpgplot 和 -IX11 标志放在 Eclipse 中,但我收到关于 pgbbuf 和 pgnumb_ 函数作为未定义引用的错误(这意味着从 Eclipse 调用时 -lpgplot 函数不起作用。

谁能告诉我如何正确设置标志以在 Photran 中运行此代码,以便我可以编译它并看到 pgplot 图形出现?

我正在添加控制台输出: