【发布时间】:2014-02-28 20:56:01
【问题描述】:
似乎我无法在 R 中安装任何需要编译任何文件的包。 eventloop.h
我使用英特尔编译器对 R 进行了自定义安装,并链接到英特尔 MKL BLAS 库。
这是我得到的具体错误:
> install.packages("setwidth")
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Selection: 77
trying URL 'http://streaming.stat.iastate.edu/CRAN/src/contrib/setwidth_1.0-3.tar.gz'
Content type 'application/x-gzip' length 3789 bytes
opened URL
==================================================
downloaded 3789 bytes
* installing *source* package ‘setwidth’ ...
** package ‘setwidth’ successfully unpacked and MD5 sums checked
** libs
icc -std=c99 -I/usr/local/lib/R/include -DNDEBUG -I/usr/local/include -fpic -O3 -ipo -xavx -openmp -c setwidth.c -o setwidth.o
In file included from setwidth.c(4):
/usr/local/lib/R/include/R_ext/eventloop.h(73): error: identifier "fd_set" is undefined
extern InputHandler *getSelectedHandler(InputHandler *handlers, fd_set *mask);
^
... more of the same ...
^
compilation aborted for setwidth.c (code 2)
make: *** [setwidth.o] Error 2
ERROR: compilation failed for package ‘setwidth’
* removing ‘/usr/local/lib/R/site-library/setwidth’
The downloaded source packages are in
‘/tmp/RtmpXuQs4W/downloaded_packages’
Warning message:
In install.packages("setwidth") :
installation of package ‘setwidth’ had non-zero exit status
请告诉我您可能需要的任何其他信息,以帮助我解决此问题。
编辑:
我尝试添加
R_XTRA_CFLAGS = -I /src/include -I /src/include/sys
到我的 ~/.R/Makevars 文件,因为 fd_set 是在 /sys/select.h 中定义的
编辑:
所以这个问题不会出现在每个包中,只有需要某些 R 标头的包才会出现。到目前为止,我只对某个作者编写的包有问题(将 R 与 VIM 集成所需的所有包,http://www.lepem.ufc.br/jaa/vim-r-plugin.html)有人有什么想法吗?
编辑:
似乎是编译器问题:
gcc -I /usr/include/ -I /usr/local/lib/R/include/ -c setwidth.c
不过有效
icc -std=c99 -I /usr/include -I /usr/local/lib/R/include -O3 -ipo -xavx -openmp -c setwidth.c
没有
【问题讨论】:
-
你在哪里安装了 R 头文件?
-
在哪里指定,我想我没有指定
-
取决于您的操作系统。您是否按照R Installation and Administration 中的说明进行操作,特别是 6.3 和附录 A?
-
@JoshuaUlrich 我在 ubuntu 操作系统上。我仍然无法弄清楚问题出在哪里,我已经查看了 R 安装和管理文档,还有其他提示/想法吗?
-
嗯,这个问题似乎只影响这个包(到目前为止)我能够安装 ggplots2。我已经联系了作者,但我知道是否会去任何地方
标签: r compiler-errors icc intel-mkl