OS X程序包的安装依赖于gfortran-4.8。

50

我正在使用 R 的 OS X 开发版本

R Under development (unstable) (2014-05-27 r65787)
Platform: x86_64-apple-darwin13.1.0 (64-bit)

使用GNU Fortran (GCC) 4.2.3(来自Simon的网站)和Xcode命令行工具版本5.1.1。

从源代码编译时,我遇到了如下错误:

gfortran-4.8   -fPIC  -g -O2  -c altmov.f -o altmov.o
make: gfortran-4.8: No such file or directory

我不确定在这里该怎么做。我可以为我已有的版本创建一个别名,但我不确定它是否真的需要4.8。

谢谢,

Max


1
你真的需要 R devel 版本吗? - Fernando
3
是的,CRAN维护人员几乎总是要求您使用最新的开发版本进行构建和检查。 - topepo
5
请访问http://r.research.att.com/libs/并查找gfortran-4.8.2。按照页面末尾的说明进行安装。另请参阅此R-SIG-Mac邮件列表线程:https://stat.ethz.ch/pipermail/r-sig-mac/2014-May/010894.html。如果您使用的是Intel Core 2 Duo,则这个版本的gfortran不会工作。 - Bhas
Bhas,感谢您的回复。我已经解压缩并成功启动(使用 gfortran-4.8 --version 进行测试),但现在出现错误 f951: internal compiler error: Abort trap: 6 - topepo
通过 R-SIG-MAC 链接,我安装了 Snow Leopard 版本,并且它运行良好(尽管我有四核 Xeon 处理器)。 - topepo
显示剩余4条评论
12个回答

53

在终端中输入以下两行命令,直接引用:

curl -O http://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2
sudo tar fvxj gfortran-4.8.2-darwin13.tar.bz2 -C /

它会为你下载Mavericks版本的gfortran(目前你的系统中缺少它),并将其安装在你的系统中。至少,这解决了我的同样的问题。

(我正在运行的是2011年底的MacPro,Mavericks)。


2
这对我也完美地起作用了。这不是Rstudio的问题,因为我在控制台安装软件包源时遇到了错误。干杯 - Marc in the box
3
对我来说解决了问题(Yosemite) - Andy Barbour
目前我在我的Mac上安装了gfortran-5(我相信是通过homebrew安装的)-使用您的代码下载gfortran-4.8会在今后造成任何问题吗? - Steve S
3
是的,这样做会影响Homebrew;这是一种不太优雅的安装gfortran的方式,并会与Homebrew的gcc公式产生冲突。 - Tim Smith
有人也遇到过从未知来源使用sudo安装二进制文件的问题吗? - normanius
显示剩余3条评论

20

编辑:我现在认为最好使用Homebrew来完成这个任务:

brew reinstall gcc48 --with-fortran

虽然我认为以下的步骤可以奏效,但并不如前面所说的那样干净。无论如何,我仍然建议按照下面所述的方式配置~/.R/Makevars。

接下来,根据@TheBigMike提供的答案,我使用了以下步骤安装homebrew旁边的gfortran-4.8,并配置R以选择这个fortran编译器。

首先,下载并解压gfortran 4.8:

su admin
curl -O http://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2
mkdir /tmp/gfortran
tar fvxz gfortran-4.8.2-darwin13.tar.bz2 -C /tmp/gfortran

删除干扰 Homebrew 的 gfortran 文件别名:

rm /tmp/gfortran/usr/local/bin/gfortran

安装gfortran 4.8

cp -r /tmp/gfortran/usr/local/ /usr/local

为了告诉R使用gfortran 4.8,需要创建一个名为~/.R/Makevars的文件:

mkdir -p ~/.R
touch ~/.R/Makevars

将以下内容放入~/.R/Makevars中:

FLIBS=""
F77="gfortran-4.8"
FC="gfortran-4.8"

现在重新启动R。一旦R被重新启动,任何依赖于fortran 4.8的包现在都应该可以工作了。 homebrew应该没有受到影响。


感谢您提供的出色答案。我尝试了 brew reinstall gcc48 --with-fortran,但仍然出现错误:ld: library not found for -lgfortran。然而,当我按照您下面的步骤操作时,它可以正常工作!然后,brew会发出警告:Warning: Unbrewed dylibs were found in /usr/local/lib. 我需要担心这个吗? - Zach
啊哈!如果我在我的~/.R/Makevars中添加FLIBS = "",那么brew reinstall gcc48 --with-fortran方法就可以工作了。 - Zach
2
在执行tar命令后,我遇到了“tar:Error opening archive: Unrecognized archive format”的错误,但是通过在curl中使用-L标志,我成功解决了这个问题:curl -0L - User800701

12

我遇到了相同的问题,虽然是在R Studio上。以下方法对我有用,但是后来我不得不重新安装所有的R软件包(注意:重新安装需要一些时间,看起来好像这个过程有很多东西在进行中,不确定是否是适当的步骤,请自行决定风险):

下载最新版本的 R Studio 并在终端中执行以下操作: brew install gcc brew update && brew reinstall r brew link --overwrite r


这个问题特别询问 R 开发者版本。我会给它一个踩。 - Ross

4

这在Rcpp FAQ第2.16节中有很好的解释。基本上,您需要安装gfortran(homebrew install gcc或其他方式),然后修改Makeconf以将FLIBS指向相关的Fortran库。

以下是我所使用的步骤:

  1. 通过homebrew安装gcc48

  2. 确保gfortran和gfortran-4.8指向新安装的版本。

  3. 注释掉/Library/Frameworks/R.framework/Resources/etc/Makeconf中的FLIBS变量。

第3步是最重要的一步,因为它旨在与按@TheBigMike建议的方式安装的gfortran配合使用,即通过下载和提取存档gfortran-4.8.2-darwin13.tar.bz2


抱歉,我错过了最后一部分。 - mpiktas

3
以下方法适用于我在OSX High Sierra和RStudio 1.1.423上的情况:
  1. 使用Homebrew安装gcc/gfortran: brew install gcc
  2. 编辑/Library/Frameworks/R.framework/Resources/etc/Makeconf文件,将所有的gfortran-4.8替换为gfortran
  3. 同时将FLIBS = -L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2替换为FLIBS = -L/usr/local/lib/gcc/7/ -lgfortran -lquadmath -lm.
  4. 重新尝试安装该软件包。

这对我来说解决了Fortran错误,但是对于我尝试的所有内容,由于其他(多样化)原因导致编译失败。MacOS High Sierra,R版本3.3.3。 - Peter M
对我来说有效。 Homebrew通过已经安装在我的笔记本电脑上(因此我跳过了步骤1),缺少的是Makeconf文件中的正确配置。 - domi

2
  1. 通过Homebrew安装gcc/gfortran: brew install gcc
  2. 确保手动替换:在/Library/Frameworks/R.framework/Resources/etc/Makeconf中将所有gfortran-4.8(或任何数字)的实例替换为gfortran
  3. FLIBS = -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm替换为FLIBS = -L/usr/local/lib/gcc/7/ -lgfortran -lquadmath -lm
  4. 重新安装robustbase包,该包是fpc库所需的

对我而言有效。注意:将gcc / 7中的7更改为您所使用的gcc版本(例如,现在是2022年,我使用了gcc / 12)。 - Cliff Bueno

1

这个回答thebigmike提供:

Type these two lines in your terminal, direct quote:

curl -O http://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2
sudo tar fvxj gfortran-4.8.2-darwin13.tar.bz2 -C /
但是
curl -OL http://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2

解决了我的问题!


1
那个答案是由TheBigMike提供的,Claus是该答案的编辑。 - Suraj Rao

1

我遇到了同样的问题,在 R cran 网站 (https://cran.ism.ac.jp/) 上找到了一份声明。在最新的 macOS High Sierra 中,一些必要的库未被包含进来,需要额外安装。该页面友好地解释了这一点,并引用了以下内容:

重要提示:此版本使用 Clang 6.0.0 和 GNU Fortran 6.1,均不是由 Apple 提供的。如果您希望从源代码编译 R 软件包,则需要下载并安装这些工具 - 请参阅 tools 目录。

我通过应用以下两个软件包(here.)解决了问题(缺少 gfortran 等)。

  1. clang-6.0.0.pkg(适用于OS X 10.11+,已签名,64位) MD5哈希值:c29700c4e7b2914073ef7e741eb105bc (约418MB)
  2. gfortran-6.1.pkg(适用于OS X 10.11+,已签名,64位) MD5哈希值:201026216e8b373d9cd2efc0cc474bb8 (约73MB)

0

更新版本的RStudio(版本0.98.1091)似乎已经解决了这个问题。


这应该被发布为评论而不是答案。或者请至少提供一个来源(关于错误的发行说明等)。 - AFract
我在0.99版本中遇到了这个错误,所以似乎并没有被修复(除非他们撤销了修复措施)。 - burger

0

如果在Mac OS 10.15或更高版本上安装依赖于FORTRAN的软件时遇到问题,最好的解决方案是将R更新至至少4.0.0版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接