Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从源代码处构建R包krb5_C_R_Kerberos_Rcpp_Devtools - Fatal编程技术网

C 从源代码处构建R包krb5

C 从源代码处构建R包krb5,c,r,kerberos,rcpp,devtools,C,R,Kerberos,Rcpp,Devtools,我正在尝试从rforge上提供的源代码安装krb5包 为此,我在Windows7上的RStudio(1.0.136)和R(3.3.1)中使用以下命令 install.packages("krb5",,"http://rforge.net/",type="source") 不幸的是,这会导致以下错误: * installing *source* package 'krb5' ... ** libs *** arch - i386 c:/Rtools/mingw_32/bin/gcc -I"C

我正在尝试从rforge上提供的源代码安装krb5包

为此,我在Windows7上的RStudio(1.0.136)和R(3.3.1)中使用以下命令

install.packages("krb5",,"http://rforge.net/",type="source")
不幸的是,这会导致以下错误:

* 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”。。。
**自由基
***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:致命错误:krb5.h:没有这样的文件或目录
#包括
^
编译终止。
制造:**[k.o]错误1
警告: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
错误:包“krb5”的编译失败
*删除“C:/Users/Fabian Desktop/Documents/R/win library/3.3/krb5”
install.packages中的警告:
运行命令“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/download_packages/krb5_0.1.tar.gz”的状态为1
install.packages中的警告:
程序包“krb5”的安装具有非零退出状态
似乎没有找到文件“krb5.h”。这是有意义的,因为该包构建在麻省理工学院的Kerberos项目上


我面临的问题是,我从未构建过C项目。因此,我不知道如何“组合”这两个项目,也不知道如何将MIT项目添加到R包中,以便在构建R包时可以使用它。非常感谢为使这项工作顺利进行而提供的一个简短的分步指南。

注意:我对krb5包的细节一无所知。但请继续阅读

Rcpp包的一种常见模式是,它们一方面是R与外部库之间的接口

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


但是,如果安装了Kerberos(开发)软件,krb5可能只会让您能够谈论Kerboros后端。换句话说,krb5可能是一个网关Kerberos,而不是Kerberos本身。

谢谢@Dirk Eddelbuettel。是的,我正在寻找一个“网关”,没关系。我想知道我是否必须首先(自己)构建外部库,然后包含构建的R包的结果。或者b)(这就是我所想的)我是否在包中的某个地方包含外部源并将它们“一起”构建?如果第二个是真的:您是否有提示将外部源文件放在包中的什么位置以便找到它们。不确定您以前是否这样做过,但通常是“是”和“是”。要链接的库必须来自某个地方(即您构建它),并且包必须知道它在哪里(在Unix上我们经常使用
配置
,在Windows上有时使用环境变量)。现在:krb5说可以在Windows上构建吗?不是所有的包裹都是…谢谢!外部库可以在windows上构建(win有一个自述文件),尽管这似乎不是很直接(至少对我来说)。我不确定R软件包。在这种情况下,我理解你的回答如下:1。构建外部库(在windows上恢复dll)。2.这个dll和一些头文件需要可用于R包的构建。我最初认为外部(未编译的)源文件可以包含在R包中,而R包是“直接”构建的,这似乎是错误的。对吧?“理论上”。在实践中,增加的困难是,这种软件通常具有构建方法(项目文件或生成文件),假设Microsoft编译器。。。你不能(通常)从使用
g++
的R混合搭配。好的,我明白了。我一定要继续读下去。但我想我现在有了一个起点。非常感谢。在阅读了一篇好的rcpp教程之后,我可能会回到这个问题上来。