【问题标题】:Code:Blocks cannot detect gfortran although installed代码:虽然已安装,但 Blocks 无法检测到 gfortran
【发布时间】:2021-01-03 23:32:13
【问题描述】:

我相信我的问题与这篇文章类似:Linux: cannot find lgfortran though gfortran is installed。 但是,由于建议的答案不能解决我的问题,对于像我这样绝望的 Linux 新手来说,除了再次询问之外似乎别无选择。

这就是问题所在。我安装了 GNU fortran 编译器 4.8.4 并且可以在终端中找到它

$ which gfortran-4.8 
/usr/bin/gfortran-4.8

$ locate gfortran
/usr/bin/gfortran-4.7
/usr/bin/gfortran-4.8
/usr/bin/x86_64-linux-gnu-gfortran-4.7 
/usr/bin/x86_64-linux-gnu-gfortran-4.8
/usr/lib/gcc/x86_64-linux-gnu/4.7/libgfortran.a
/usr/lib/gcc/x86_64-linux-gnu/4.7/libgfortran.so
/usr/lib/gcc/x86_64-linux-gnu/4.7/libgfortran.spec
/usr/lib/gcc/x86_64-linux-gnu/4.7/libgfortranbegin.a
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.so
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.spec
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortranbegin.a
/usr/lib/x86_64-linux-gnu/libgfortran.so.3
/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
/usr/share/doc/gfortran-4.7
/usr/share/doc/gfortran-4.8
/usr/share/doc/libgfortran-4.7-dev
/usr/share/doc/libgfortran-4.8-dev
/usr/share/doc/libgfortran3
/usr/share/man/man1/gfortran-4.7.1.gz
/usr/share/man/man1/gfortran-4.8.1.gz
/usr/share/man/man1/x86_64-linux-gnu-gfortran-4.7.1.gz
/usr/share/man/man1/x86_64-linux-gnu-gfortran-4.8.1.gz
/var/cache/apt/archives/gfortran-4.7_4.7.3-12ubuntu1_amd64.deb
/var/cache/apt/archives/gfortran-4.8_4.8.4-2ubuntu1~14.04_amd64.deb
/var/cache/apt/archives/libgfortran-4.7-dev_4.7.3-12ubuntu1_amd64.deb
/var/cache/apt/archives/libgfortran-4.8-dev_4.8.4-2ubuntu1~14.04_amd64.deb
/var/cache/apt/archives/libgfortran3_4.8.4-2ubuntu1~14.04_amd64.deb
/var/lib/dpkg/info/gfortran-4.7.list
/var/lib/dpkg/info/gfortran-4.7.md5sums
/var/lib/dpkg/info/gfortran-4.8.list
/var/lib/dpkg/info/gfortran-4.8.md5sums
/var/lib/dpkg/info/libgfortran-4.7-dev:amd64.list
/var/lib/dpkg/info/libgfortran-4.7-dev:amd64.md5sums
/var/lib/dpkg/info/libgfortran-4.8-dev:amd64.list
/var/lib/dpkg/info/libgfortran-4.8-dev:amd64.md5sums
/var/lib/dpkg/info/libgfortran3:amd64.list
/var/lib/dpkg/info/libgfortran3:amd64.md5sums
/var/lib/dpkg/info/libgfortran3:amd64.postinst
/var/lib/dpkg/info/libgfortran3:amd64.postrm
/var/lib/dpkg/info/libgfortran3:amd64.shlibs
/var/lib/dpkg/info/libgfortran3:amd64.symbols

所以 gfortran 似乎已安装,虽然我不明白为什么在我删除它后仍然存在 4.7 版本。

在设置 Code:Blocks 的全局编译器设置时,当我选择 GNU Fortran 编译器及其工具链可执行文件时,我尝试将安装目录设置为

/usr 

/usr/bin 

/usr/lib/gcc/x86_64-linux-gnu/4.8/

正如上一篇文章所建议的,代码:块告诉我

could not auto-detect installation path of "GNU Fortran Compiler".....

图片中提供了更多编译器配置的详细信息(感谢 Mike 的建议)。

这是我计算机上编译器的完整列表:

List of Compliers

【问题讨论】:

  • 欢迎来到 SO!当您声称您的帖子不重复时,请说明现有帖子如何无法解决您的问题
  • @MarioTrucco 正如我所说,我已经尝试将 C:B 安装目录设置为 /usr/lib/gcc/x86_64-linux-gnu/4.8/,但没有成功。
  • 请添加此信息:GNU Fortran 编译器中显示的编译器的确切名称 -> 工具链可执行文件 -> 程序文件 -> C 编译器
  • 我猜这是因为你的编译器被命名为gfortran-4.8 而不仅仅是gfortran。看看你的 IDE 中是否有一个选项可以指定编译器可执行文件的名称,而不仅仅是它的安装路径。
  • 谢谢@casey。添加 -4.8 即可解决问题。

标签: linux fortran codeblocks gnu gfortran


【解决方案1】:

您的帖子显示您同时拥有gfortran-4.7gfortran-4.8 安装在/usr/bin下。

拥有多个 GCC Fortran 编译器(或多个 C 或 C++ 编译器)是 完全有效且司空见惯。 Code::Blocks 将允许您配置 尽可能多的 Fortran 编译器,只要你给它们不同的 名字。如果您只想将其中一个配置为 “GNU Fortran 编译器”并忽略其他。

但无论如何,Code::Blocks 必须能够明确识别 已安装的编译器,您正在调用“GNU Fortran 编译器”。你 已将编译器的安装目录指定为/usr/bin 并将 Program files 编译器名称保留为 gfortran

你的系统中没有/usr/bin/gfortran这样的编译器, 在您的PATH 中的任何地方都没有名为gfortran 的程序。你 有/usr/bin/gfortran-4.7/usr/bin/gfortran-4.8。正如你所拥有的 安装了它们,Code::Blocks 假设你想要它们。它 不知道您要将其中哪一个配置为“GNU Fortran 编译器”。

所以:-

  • 设置编译器的安装目录 = /usr/bin
  • 程序文件中,将所有出现的gfortran 更改为gfortran-4.8, 如果您希望“GNU Fortran 编译器”表示 gfortran-4.8
  • 好的。

【讨论】:

  • 感谢 Mike 的一步一步的指导。现在我看到版本号很重要。现在已经编译了 Helloworld。非常感谢!
  • 不客气。如果您想在 C::B 中配置 4.7 和 4.8,请转到 全局编译器设置 -> GNU Fortran 编译器 -> 复制。单击复制,为 4.7 选择一个昵称,然后在新编译器的配置中进行明显的 4.8 -> 4.7 更改。
【解决方案2】:

20.3 版本中的默认编译器名称是 mingw32-gfortran。但是,安装时附带的可执行文件名称是 x86_64-w64-mingw32-gfortran。如果这是在编译器设置中编写的。它可以工作。enter image description here

【讨论】:

    最近更新 更多