我正在尝试从Linux(RHEL)服务器上的源代码安装一些软件包。但是每当包需要一些C ++编译时,它都会失败。
例如,我尝试安装Ckmeans.1d.dp
包。如果我调用R CMD INSTALL Ckmeans.1.dp_4.2.1.tar.gz
,我会得到以下输出(截断),您可以看到编译器被省略。
...* installing *source* package ‘Ckmeans.1d.dp’ ...
** libs
I/usr/include/R -DNDEBUG -I/usr/local/include -c Ckmeans.1d.dp.cpp -o Ckmeans.1d.dp.o
make: I/usr/include/R: Command not found
...
-shared -L/usr/local/lib64 -o Ckmeans.1d.dp.so Ckmeans.1d.dp.o Ckmeans.1d.dp_main.o dynamic_prog.o fill_SMAWK.o fill_log_linear.o fill_quadratic.o select_levels.o weighted_select_levels.o -L/usr/lib64/R/lib -lR
/bin/sh: line 2: -shared: command not found
make: *** [Ckmeans.1d.dp.so] Error 127
ERROR: compilation failed for package ‘Ckmeans.1d.dp’
我目前遇到的服务器只有R 3.1.1并且我没有管理员权限。 $Rhome/etc/Makeconf
已定义CXX
和CC
。我还确认已安装g++
和gcc
。
这里可能会发生什么?
答案 0 :(得分:1)
总是一个空白的环境变量'价值得到扩展。也许(只是猜测一下)这个包会使用C ++ 11,所以$(CXX11} -shared
会被扩展,而......变成-shared
并触发错误。
查看R设置,例如通过less $(R HOME)/etc/Makevars
,看看它的期望。
我认为如果必须的话,你可以在下面安装gcc
等,比如~/bin
。有些软件包需要编译器......