[英]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.