带有 Fortran 源代码的 R 包:如何在“pkgname/src/”下制作“Makevars”文件?
R package with Fortran Source Code: how to make “Makevars” file under “pkgname/src/”?
与我过去的问题的解决方案相关,,
我在 ~/.R/ 中有 Makevars。这允许我构建 R 包并在我的系统上本地工作。
现在我想让这个包可移植。我尝试将此 Makevars 移动到 src 文件夹并收到以下错误:
* installing *source* package ‘pkgname’ ...
** libs
gfortran-4.8 -fPIC -Wall -g -O2 -c epidata.f95 -o epidata.o
make: gfortran-4.8: No such file or directory
make: *** [epidata.o] Error 1
ERROR: compilation failed for package ‘pkgname’
* removing ‘/Users/Vineetha/Desktop/pkgname.Rcheck/pkgname’
我该如何解决这个问题?
好的,我现在想我明白了这个问题。
您已经使用了维基上 gfortranbinaries page 的 gfortran。
您已调整 ~/.R/Makevars/
,以便宏 FC
、F77
和 FLIBS
指向正确的二进制文件和库。
您将 Makevars
移动到您的包 src
文件夹中以使您的包可移植。您假设它将是便携式的。您假设(或希望)R 包构建器会尊重您选择的编译器。然而,它不是那样工作的。
当 R 构建包时,它将始终使用用于构建您正在使用的 R 版本的编译器。您不能覆盖包Makevars
中的上述宏。这些宏只能在
~/.R/Makevars/
.
您最有可能使用的 R 版本是在 OS X mavericks 上使用专门编译的 gfortran 4.8.2 编译的。这就是 R 所抱怨的。可以从here获取。您必须使用终端将压缩文件解压缩到正确的位置。但是,您不能只安装该版本的 gfortran,因为它会部分覆盖您的 6.1 版本。 所以不要那样做!.
您不必担心使用 gfortran 6.1
的问题。请参阅(已修补)R installation and administration manual 的第 57 页。
它声明您可以并且可以将您正在使用的 gfortran 与从 CRAN 获得的 R 的二进制版本一起使用。
所以没必要把你的~/.R/Makevars/
移开。
要检查包裹的便携性,您可以将其发送到 winbuilder 服务。或者使用 Linux 虚拟机作为例子。
要保持包含 Fortran 源代码的包可移植,请不要使用该编译器的任何扩展,也不要使用特定于您的编译器版本的 Fortran 扩展。
简而言之,您不必解决您提到的问题。只需编写可移植代码。
与我过去的问题的解决方案相关,
现在我想让这个包可移植。我尝试将此 Makevars 移动到 src 文件夹并收到以下错误:
* installing *source* package ‘pkgname’ ...
** libs
gfortran-4.8 -fPIC -Wall -g -O2 -c epidata.f95 -o epidata.o
make: gfortran-4.8: No such file or directory
make: *** [epidata.o] Error 1
ERROR: compilation failed for package ‘pkgname’
* removing ‘/Users/Vineetha/Desktop/pkgname.Rcheck/pkgname’
我该如何解决这个问题?
好的,我现在想我明白了这个问题。
您已经使用了维基上 gfortranbinaries page 的 gfortran。
您已调整 ~/.R/Makevars/
,以便宏 FC
、F77
和 FLIBS
指向正确的二进制文件和库。
您将 Makevars
移动到您的包 src
文件夹中以使您的包可移植。您假设它将是便携式的。您假设(或希望)R 包构建器会尊重您选择的编译器。然而,它不是那样工作的。
当 R 构建包时,它将始终使用用于构建您正在使用的 R 版本的编译器。您不能覆盖包Makevars
中的上述宏。这些宏只能在
~/.R/Makevars/
.
您最有可能使用的 R 版本是在 OS X mavericks 上使用专门编译的 gfortran 4.8.2 编译的。这就是 R 所抱怨的。可以从here获取。您必须使用终端将压缩文件解压缩到正确的位置。但是,您不能只安装该版本的 gfortran,因为它会部分覆盖您的 6.1 版本。 所以不要那样做!.
您不必担心使用 gfortran 6.1
的问题。请参阅(已修补)R installation and administration manual 的第 57 页。
它声明您可以并且可以将您正在使用的 gfortran 与从 CRAN 获得的 R 的二进制版本一起使用。
所以没必要把你的~/.R/Makevars/
移开。
要检查包裹的便携性,您可以将其发送到 winbuilder 服务。或者使用 Linux 虚拟机作为例子。
要保持包含 Fortran 源代码的包可移植,请不要使用该编译器的任何扩展,也不要使用特定于您的编译器版本的 Fortran 扩展。
简而言之,您不必解决您提到的问题。只需编写可移植代码。