使用 R CMD SHLIB 编译 F77 以用于 R 包。改变`-fmax-stack-var-size=`

Compiling F77 with R CMD SHLIB for use in R package. Changing `-fmax-stack-var-size=`

我从 1980 年代继承了一些 F77 代码,我想最终在 CRAN 上的 R 包中使用这些代码。基本上,我会将用 .Call 直接用 R 编写的慢速函数替换为运行速度快 100 倍的 F77 子例程。我过去用 C 做过类似的繁重工作。但是,当我通过 R CMD SHLIB 编译 fortran 子例程时,我收到一条警告,其中一个数组“大于‘-fmax-stack-var-size=’设置的限制”。我可以通过 gfortran 显式编译并适当地设置 -fmax-stack-var-size 来解决这个问题。但是,如何在 运行 R CMD SHLIB 时设置标志?在 Makevars 文件中?最终,我会将其包含在新版本中并提交给 CRAN,我想避免任何问题。非常感谢。

是的,在 ~/.R/Makevars 中用于 您的 编译,在 src/Makevars 中用于软件包的所有构建。 CRAN 对哪些选项是可移植的有意见,因此您可能无法使用 src/Makevars.

中的选项

这是我的资料:

edd@rob:~$ grep ^F .R/Makevars 
FLAGS=-Wall -O3 -g -pipe $(PEDANTIC) $(XTRAFLAGS)
FFLAGS=-O3 -g0 -Wall -pipe
FCFLAGS=-O3 -g0 -Wall -pipe
FC=$(CCACHE) gfortran
F77=$(CCACHE) gfortran
F95=$(CCACHE) gfortran
edd@rob:~$ 

其中一些其他值是您可以推测的先前设置的。请注意,有几个 Fortran 编译器变量,如往常一样在 Writing R Extensions.

中详细说明