提问人:user111024 提问时间:11/11/2021 更新时间:11/11/2021 访问量:132
使用 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 包中使用这些代码。基本上,我将用 a 替换用直接 R 编写的慢速函数,以替换运行速度快 100 倍的 F77 子例程。我过去也用 C 语言做过类似的繁重工作。但是,当我通过编译 fortran 子例程时,我收到一条警告,称其中一个数组“大于'-fmax-stack-var-size='设置的限制”。我可以通过显式编译和适当设置来解决这个问题。但是,如何在运行时设置标志?在文件中?最终,我会将其包含在新版本中并提交给 CRAN,我想阻止任何问题。非常感谢。.Call
R CMD SHLIB
gfortran
-fmax-stack-var-size
R CMD SHLIB
Makevars
答:
3赞
Dirk Eddelbuettel
11/11/2021
#1
是的,用于您的编译,用于包的所有版本。CRAN 对哪些选项是可移植的有看法,因此您可能无法随 中提供该选项。~/.R/Makevars
src/Makevars
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 编译器变量,详细信息与编写 R 扩展中通常相同。
评论
0赞
user111024
11/11/2021
非常好。谢谢。我需要时间来鼓起勇气打开 Writing R 扩展,但我会努力变得勇敢。我从未在 R 包中包含过 fortran 子例程,我预计这会很痛苦。
1赞
Dirk Eddelbuettel
11/11/2021
Naa, R 从第一天起就支持这一点。NetLib 和 StatLib 等等。
上一个:Fortran 中字符串的行延续
下一个:需要有关 BDD 图形的帮助
评论