我正在尝试在Ubuntu Server 16.04上编译R 3.3.1。我以前在同一台计算机上成功编译了这个版本的R,但现在我无法编译R。
我的目标是使用HiPLARM package。我一直在关注HiPLARM的安装说明,所以我需要用共享BLAS重新编译R (我正在使用MKL)。我卸载了以前的安装,并且我已将--enable-BLAS-shlib
标记添加到configure
,但编译失败。当我删除附加标志(并返回到我原来的配置设置)时,编译似乎工作,但安装失败。我不知道我的系统会发生什么变化,这会让我用相同的安装说明成功编译相同版本的R,但事实并非如此。
以下是具体细节。我运行这个脚本:
export MKLPATH=/opt/intel/mkl/lib/intel64_lin
export MKLINCLUDE=/opt/intel/mkl/include
export R_PAPERSIZE=letter
export R_BATCHSAVE=--no-save
export FFLAGS="-I$MKLINCLUDE"
export CFLAGS="-march=native -O3 -m64 -I$MKLINCLUDE"
export CXXFLAGS="-march=native -O3 -m64 -I$MKLINCLUDE"
export FCFLAGS="-I$MKLINCLUDE"
MKL="-L$MKLPATH -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl"
./configure --with-blas="$MKL" --with-lapack
配置摘要按预期显示,因此我使用make
进行编译,除了以下内容外,一切正常:
main.c: In function ‘dummy_ii’:
main.c:1656:12: warning: function returns address of local variable [-Wreturn-local-addr]
return (uintptr_t) ⅈ
当我从bin
目录运行R时,一切似乎都正常工作。与没有MKL相比,我可以在更短的时间内将两个5000x5000的随机正常绘制矩阵相乘。但是,当我使用make install
或checkinstall
时,我收到以下错误:
installing doc ...
/usr/bin/install: cannot stat 'NEWS': No such file or directory
/usr/bin/install: cannot stat 'NEWS.pdf': No such file or directory
/usr/bin/install: cannot stat 'NEWS.rds': No such file or directory
/usr/bin/install: cannot stat 'NEWS': No such file or directory
/usr/bin/install: cannot stat 'NEWS.pdf': No such file or directory
Makefile:119: recipe for target 'install-sources2' failed
make[1]: *** [install-sources2] Error 1
此外,当我尝试在我的脚本中使用--enable-BLAS-shlib
标志时,我收到许多implicit declaration of function
的警告,并且编译最终会因许多undefined reference
错误而失败。我找到this post,但脚本对我来说不成功(也许是因为我没有使用英特尔编译器?)。
非常感谢任何帮助!