2017-01-09 104 views
0

我试图从rforge rforge上提供的源代码安装包krb5。从源代码构建R包krb5

要做到这一点我在Windows 7

install.packages("krb5",,"http://rforge.net/",type="source") 

不幸的是这会导致下面的错误使用下面的命令中RStudio(1.0.136)与R(3.3.1):

* installing *source* package 'krb5' ... 
** libs 

*** arch - i386 
c:/Rtools/mingw_32/bin/gcc -I"C:/PROGRA~1/R/R-33~1.1/include" -DNDEBUG  -I"d:/Compiler/gcc-4.9.3/local330/include"  -O3 -Wall -std=gnu99 -mtune=core2 -c k.c -o k.o 
k.c:1:18: fatal error: krb5.h: No such file or directory 
#include <krb5.h> 
       ^
compilation terminated. 
make: *** [k.o] Error 1 
Warnung: Ausführung von Kommando 'make -f "Makevars" -f "C:/PROGRA~1/R/R-33~1.1/etc/i386/Makeconf" -f "C:/PROGRA~1/R/R-33~1.1/share/make/winshlib.mk" SHLIB="krb5.dll" OBJECTS="k.o"' ergab Status 2 
ERROR: compilation failed for package 'krb5' 
* removing 'C:/Users/Fabian Desktop/Documents/R/win-library/3.3/krb5' 
Warning in install.packages : 
    running command '"C:/PROGRA~1/R/R-33~1.1/bin/x64/R" CMD INSTALL -l "C:\Users\User\Documents\R\win-library\3.3" C:\Users\User\AppData\Local\Temp\RtmpCOnG2U/downloaded_packages/krb5_0.1.tar.gz' had status 1 
Warning in install.packages : 
    installation of package ‘krb5’ had non-zero exit status 

似乎没有找到文件“krb5.h”。这是有道理的,因为该包基于MIT的Kerberos项目here

我面临的问题是,我从来没有建立一个C项目。因此,我不知道如何“合并”这两个项目,或者将MIT项目添加到R包的位置,以便在构建R包时可用。我应该采取的一步一步的指导,使这项工作非常感谢。

回答

1

警告:我对包装krb5的细节一无所知。但请继续阅读...

Rcpp包的常见模式是它们是接口一方面是R和另一方面是外部库。

为了编译连接两个这样的世界的代码,您需要头文件和来自的库。 R涵盖了自己的一面。

但是,krb5可能只会让您有能力与Kerboros后端进行对话前提是您安装了Kerberos(开发)软件。换句话说,krb5可能是一个网关Kerberos,而不是Kerberos本身。

+0

谢谢@Dirk Eddelbuettel。是的,“网关”是我正在寻找的,没关系。我想知道a)是否必须首先构建外部库(在它自己的情况下),然后包含构建的R包的结果。或者b)(这就是我的想法)是否将外部源包含在包中的某个位置并将它们“一起构建”?如果第二个是真的:你有没有把外部源文件放在包中以便找到它们的提示。 –

+0

不知道你以前是否做过这件事,但通常是“是,是”。链接的库必须来自某处(即构建它),并且程序包必须知道它在哪里(在Unix上我们经常使用'configure',在Windows上有时使用环境变量)。现在:它说krb5可以在Windows上构建?并非所有包装都是... –

+0

谢谢!外部库是可以在Windows上构建的(有一个赢得自述文件),尽管这看起来并不直接(至少对我而言)。不确定R包。在这种情况下,我理解你的答案如下:1.构建外部库(在Windows上的dll中重新设置)。 2.这个DLL和一些头文件需要用于R包构建。我最初认为外部(未编译)源文件可以包含在R包中,而R包是“直接”构建的,似乎是错误的。对? –