我正在尝试使用gfortran或g95编译器在Cygwin中编译建模程序。我已经安装了两个编译器,但是当我去配置程序时,它会检查编译器,然后找不到(error: Fortran compiler cannot create executables)
。我是Cygwin的新手 - 我怀疑它与我安装编译器的方式/位置有关...有什么想法吗?
谢谢,
L,
答案 0 :(得分:1)
对于使用autotools的初学者来说,这个问题很常见。它可以是:
LD_LIBRARY_PATH
。我遇到了第一和第三种情况。
解决方案的方法。
hello world
程序。必要时安装缺少的库。另外,请确保您可以将hello world
程序与建模程序使用的相同库链接起来,最后一条语句可能会引导您进入第三种情况。PATH
变量或cygwin中的类似变量。或者明确地给出要配置的编译器的完整路径。LD_LIBRARY_PATH
或cygwin中的类似变量。在我的一个案例中,问题是autotools
用于测试编译器的测试程序无法运行。它已成功编译但无法运行。我安装了项目在未包含在库路径中的路径中使用的所有库。发生的事情是这些库的路径设置在configure.ac
或makefile.am
中,以便编译正常。但是配置中包含的测试程序的运行找不到它们。这是一个主要用于动态链接库的问题。将我的.so路径添加到LD_LIBRARY_PATH
解决了问题。以下link也可以提供帮助。
答案 1 :(得分:0)
对我来说,让可执行代码通过此过程会更有用,所以我要介绍一些。这可以解决您的问题,
我怀疑这与我安装编译器的方式/位置有关...
因为从apt-cyg
开始的安装应该有助于使系统知道在哪里寻找编译器。我也在解决一个可能的链接问题。
bballdave025@MY-MACHINE /cygdrive/c/bballdave025
$ apt-cyg install gcc-fortran libgfortran5
如果您还没有apt-cyg
,请按照another answer中的说明进行操作。
# Get to where your setup executable lives.
# This is what you used to install Cygwin the first time.
# Note that mine is for the 64-bit version, and that
# I keep mine in C:\cygwin64. Your path might be
# different. You also might need to re-download
# The setup executable from Cygwin.
$ cd /path/to/setup_install/setup_x86-64.exe -q -P wget
$ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
$ chmod +x apt-cyg
$ mv apt-cyg /usr/local/bin
可能需要libgfortran5
(或更新的版本,如果在搜索时可用)。这就是我认为可能是这种情况的原因。
bballdave025@MY-MACHINE /cygdrive/c/bballdave025
$ man gcc | grep -A 3 "[ ]*[-]l[ ]\{0,2\}library$"
-llibrary
-l library
Search the library named library when linking. (The second
alternative with the library as a separate argument is only for
POSIX compliance and is not recommended.)
(请注意,我没有包含结果的某些部分,这些部分没有用,可以通过在命令前加上MANWIDTH=160
,比照here来解决。)
关于文件上的lib
前缀,与the answer to a question有更多的细节和不同的结果:
您可以随意命名一个库,但是如果您想让gcc的-l标志找到正确的库,则需要使用链接描述的方式对其进行命名。例如,
gcc -o myapp myapp.c -lm
,[w]将编译myapp.c
,将生成的对象与libm.a
链接,并输出一个名为myapp
的可执行文件。如今,可能会有更复杂的搜索路径,其中涉及动态库名称等,但是您应该从此示例中获得基本思路。 [此外,您可以在gcc
手册页的以下部分中进行浏览:
-l library ...
...用lib和.a包围库,并搜索几个目录。
所有这些信息的基本原因是:很可能为了与 gfortran
库链接,您需要安装一个软件包命名为 libgfortran
。我不确定这是如何工作的,特别是在Cygwin man
页面稍有不同的情况下,但是值得尝试。在这种情况下,您可能需要的其他东西是类似的
apt-cyg install libgfortran
或
apt-cyg install libgfortran5
以下是一些有关如何找到要安装的内容的有用信息。当遇到类似问题时,我去了Cygwin package search,但是我只有三个条目,其中包含三个版本的netcdf-fortran
(archived)。我想要gfortran
,所以我一直在寻找
我在this SO answer中找到了一个不错的gfortran
答案。有了这个答案,我回到了Complete Cygwin Package List,带着值得信赖的 Ctrl + F 武装起来,因为我知道有些软件包与从搜索。完整列表中有
cygwin64-gcc-fortran
用于Cygwin 64位工具链(Fortran)的GCC`
gcc-fortran
GNU编译器集合(Fortran)
和libgfortran
的条目。
希望其中一些信息会有所帮助,或者至少具有教育意义。