在ubuntu上编译R软件包,无效的ELF头文件
问题描述:
我不再能够从源代码编译R软件包,而且这在今天之前从未成为问题。这是发生了什么:在ubuntu上编译R软件包,无效的ELF头文件
R CMD build BAMMtools
* checking for file ‘BAMMtools/DESCRIPTION’ ... OK
* preparing ‘BAMMtools’:
* checking DESCRIPTION meta-information ... OK
* cleaning src
* checking for LF line-endings in source and make files
* checking for empty or unneeded directories
* looking to see if a ‘data/datalist’ file should be added
* building ‘BAMMtools_2.1.0.tar.gz’
R CMD INSTALL BAMMtools
* installing to library ‘/usr/local/lib/R/site-library’
* installing *source* package ‘BAMMtools’ ...
** libs
make: Nothing to be done for 'all'.
installing to /usr/local/lib/R/site-library/BAMMtools/libs
** R
** data
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/local/lib/R/site-library/BAMMtools/libs/BAMMtools.so':
/usr/local/lib/R/site-library/BAMMtools/libs/BAMMtools.so: invalid ELF header
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/usr/local/lib/R/site-library/BAMMtools’
* restoring previous ‘/usr/local/lib/R/site-library/BAMMtools’
这似乎并不符合该R包特别是一个问题,因为我能够从R内安装的软件包,如:
> install.packages('BAMMtools_2.1.0.tar.gz', repos=NULL)
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
* installing *source* package ‘BAMMtools’ ...
** libs
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c cohort_matrix.c -o cohort_matrix.o
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c dtrates.c -o dtrates.o
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c jenksBrks.c -o jenksBrks.o
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c treetraverse.c -o treetraverse.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o BAMMtools.so cohort_matrix.o dtrates.o jenksBrks.o treetraverse.o -L/usr/lib/R/lib -lR
installing to /usr/local/lib/R/site-library/BAMMtools/libs
** R
** data
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (BAMMtools)
我在Ubuntu v15.10下运行R v3.2.2,很狡猾。我无法想象在过去24小时内我所做的任何事情都会产生这种效果,除了使用sudo apt-get update/upgrade更新系统。
尽管这对安装软件包没有太大的问题,但是我也无法运行R CMD检查命令,这对于开发来说是一个问题。
任何建议或意见将不胜感激!谢谢!
半正式推荐的方式确实是'R CMD INSTALL'这个'.tar.gz'文件,而不是源目录。我通过不安装'.tar.gz'读过其他人遇到的问题,并且看到R核心人员说在目录上调用INSTALL不受支持。尽管“lib和pkgs的元素可能是目录的绝对路径或相对路径名,pkgs也可能包含程序包归档文件的名称:然后这些文件会被提取到临时目录中。”从https://stat.ethz.ch/R-manual/R-devel/library/utils/html/INSTALL.html –
您是对的:如果IR CMD编译并将该程序包移至其他目录,然后将R CMD安装,它工作正常。显然,源代码目录的存在是一个问题,虽然它不曾是...谢谢! – Pascal
杰克是正确的,它不仅仅是_semi-official_:它已经是推荐多年的唯一方法。 –