在Cygwin中安装gfortran

在Cygwin中安装gfortran,fortran,cygwin,fortran90,gfortran,Fortran,Cygwin,Fortran90,Gfortran,我试图用gfortran或g95编译器在Cygwin中编译一个建模程序。我已经安装了这两个编译器,但当我去配置程序时,它会检查编译器,然后找不到(错误:Fortran编译器无法创建可执行文件)。我是Cygwin的新手——我怀疑这与我如何/在哪里安装编译器有关……有什么想法吗 谢谢, L.对于使用自动工具的初学者来说,这个问题很常见。它可以是: 图书馆缺失;这可能是您的项目或编译器/系统库中缺少的库,如用于g95的libgfortran或类似库 自动工具无法检测到您的编译器 动态图书馆问题;未设置

我试图用gfortran或g95编译器在Cygwin中编译一个建模程序。我已经安装了这两个编译器,但当我去配置程序时,它会检查编译器,然后找不到
错误:Fortran编译器无法创建可执行文件)
。我是Cygwin的新手——我怀疑这与我如何/在哪里安装编译器有关……有什么想法吗

谢谢,


L.

对于使用自动工具的初学者来说,这个问题很常见。它可以是:

  • 图书馆缺失;这可能是您的项目或编译器/系统库中缺少的库,如用于g95的libgfortran或类似库
  • 自动工具无法检测到您的编译器
  • 动态图书馆问题;未设置动态库的运行时路径。有关linux环境,请参阅
    LD\u库路径
  • 交叉编译问题,我不太了解cygwin,但这可能是一个问题。我也不是交叉编译的专家。这也可能是我不知道的另一种情况
  • 我遇到了第一和第三种情况

    解决办法

  • 确保您可以手动编译并运行一个简单的
    hello world
    程序。如有必要,请安装缺少的库。还要确保您可以将您的
    hello world
    程序与建模程序使用的相同库相链接,最后一句话可能会导致第三种情况
  • 将编译器的路径添加到cygwin中的
    path
    变量或类似变量中。或者显式地给出要配置的编译器的完整路径
  • 将库的路径添加到linux环境的运行库路径
    LD_LIBRARY_path
    ,或cygwin中的类似变量。在我的一个例子中,问题是
    autotools
    用来测试编译器的测试程序无法运行。已成功编译,但无法运行。我在库路径中未包含的路径中安装了项目使用的所有库。发生的情况是,在
    configure.ac
    makefile.am
    中设置了这些库的路径,因此编译是正常的。但是运行configure中包含的测试程序找不到它们。这是一个主要针对动态链接库的问题。将路径添加到my.so到
    LD\u库中\u路径
    解决了这个问题
  • 嗯,我真的帮不了你。我建议的唯一解决方案是,如果你知道如何安装linux系统(双引导或虚拟机),因为我不会在那里提供帮助

  • 以下内容也会有所帮助。

    对于我来说,让可执行代码来完成这个过程更有帮助,所以我将加入一些。这是为了解决你的问题

    我怀疑这与我安装编译器的方式/地点有关

    因为来自apt cyg的安装应该有助于让系统知道在哪里可以找到编译器。我也在讨论一个可能的联系问题

    bballdave025@MY-机器/cygdrive/c/bballdave025
    $apt cyg安装gcc fortran libgfortran5
    
    如果您还没有apt cyg
    ,请按照中的说明进行操作

    #进入安装程序可执行文件所在的位置。
    #这是您第一次安装Cygwin时使用的。
    #请注意,我的是64位版本,而且
    #我把我的保存在C:\cygwin64中。你的道路可能是
    #不一样。您可能还需要重新下载
    #Cygwin中的安装程序可执行文件。
    $cd/path/to/setup\u安装/setup\u x86-64.exe-q-P wget
    $wgethttps://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
    $chmod+x apt cyg
    $mv apt cyg/usr/local/bin
    

    可能需要使用
    libgfortran5
    (或更新版本,如果搜索时可用)。这就是为什么我认为可能是这样

    bballdave025@MY-机器/cygdrive/c/bballdave025
    $man gcc | grep-a3“[]*[-]l[]\{0,2\}库$”
    -图书馆
    -图书馆
    链接时搜索名为library的库。(二)
    将库作为单独参数的备选方案仅适用于
    POSIX合规性,不建议使用。)
    
    (请注意,我没有包括结果中一些不有用的部分,可以通过在命令前面加上
    MANWIDTH=160
    ,cf来修复这些部分。)

    关于文件上的
    lib
    前缀,有更多的细节和稍有不同的结果:

    您可以随意命名一个库,但是如果您想让gcc的-l标志找到正确的库,您需要按照链接描述的方式命名它。例如,
    gcc-o myapp myapp.c-lm
    ,[w]将编译
    myapp.c
    ,将结果对象链接到
    libm.a
    ,并输出一个名为
    myapp
    的可执行文件。现在,可能有一个更复杂的搜索路径涉及动态库名称等,但您应该从这个示例中了解基本概念。[此外,您可以从
    gcc
    手册页查看本节:

    -l库…

    。。。用lib和.a包围库并搜索多个目录

    所有这些信息的基本原因是:为了链接到
    gfortran
    库,您需要安装一个名为
    libgfortran
    的包。我不确定这是如何工作的,尤其是Cygwin
    man
    页面略有不同,但值得一试。在这种情况下,您可能需要的额外内容如下

    apt cyg安装libgfortran

    apt cyg安装libgfortran5


    这里有一些关于我如何找到要安装的内容的有用信息。当我遇到类似问题时,我去了,但是我只得到了三个条目,其中有三个版本的
    netcdf-fortran

    ()。我想要