我有一个需要使用的R包。有问题的套餐是BQuant。
该软件包可以下载zip file(我后来发现)包含windows二进制文件。首先,我尝试提取这些二进制文件并将其打包在.tar.gz中我使用install.packages()安装了.tar.gz包。
这没有给出任何错误但是当我试图调用包R的任何函数时,我给出了错误:Error: could not find function <function_name>
。
然后我找到source files并尝试在.tar.gz中提取和重新打包。这次,在安装过程中,错误是:**ERROR: Windows-only package**
当我在source files中检查说明OS_type: windows
时。我删除了该行并再次尝试。这次错误是:
gcc -std=gnu99 -shared -o BQuant.so dp.o -L/usr/lib/R/lib -lR
dp.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: ***[BQuant.so] Error 1
ERROR: compilation failed for package ‘BQuant’
简而言之: 我需要知道这个Windows软件包是否可以安装在Linux中。
答案 0 :(得分:3)
我认为你需要在'BQuant \ R \ fcn_preproc.r'文件中改变一下。
此文件加载dll文件,这是一个仅限Windows的文件。
.First.lib <- function(lib, pkg)
{
library.dynam("BQuant.dll")
}
您可以尝试添加基于平台的测试。
.First.lib <- function(lib, pkg)
{
if(.Platform$OS.type == 'windows'){
library.dynam("BQuant.dll")
}
if(.Platform$OS.type == 'unix'){
library.dynam("BQuant.so")
}
}
这可能会成功。 另外不要忘记更改依赖文件的os行。
要尝试编译.c文件,可以从终端使用此命令。
R CMD SHLIB -o BQuant.so dc.c
根据:http://www.ats.ucla.edu/stat/r/library/interface.pdf和http://www.maths.lancs.ac.uk/~prangle/CinR/CinR.pdf
答案 1 :(得分:2)
据我所知,unix / linux没有编译的代码对象。您链接到的zip实际上只是一个Windows二进制文件,并且缺少在Linux上编译成等效的BQuant.dll所需的源代码。甚至R代码都在&#34;编译&#34;形式,即不是纯文本R代码。
除非您拥有源代码,否则您无法将其编译为在Linux上运行。修改维护者以查看他们是否可以提供正确的源包。