簡體   English   中英

使用 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 倍。 我過去曾用 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 編譯器變量,如通常的編寫 R 擴展中的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM