首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R重新编译包失败,因为失败

R重新编译包失败,因为失败
EN

Stack Overflow用户
提问于 2014-02-06 07:53:07
回答 1查看 1.2K关注 0票数 3

在我的linux集群上,我很难重新编译需要在最新版本中删除libRcpp.so而重新编译的R包。最终目标是让R包DEseq2运行。我们已经在g++目录中安装了新版本的/opt/bin,在/opt/lib64中安装了新的库。我还创建了具有以下指令的.R/Makevars

代码语言:javascript
复制
CXX=/opt/bin/g++ -Wl,-rpath,/opt/lib64 -Wl,-L,/opt/lib64

 -Wl,-llibstdc++ CC=/opt/bin/c++ -Wl,-rpath,/opt/lib64 -Wl,-L,/opt/lib64 -Wl,-llibstdc++ 
SHLIB_OPENMP_CXXFLAGS= -fopenmp

“各种版本的Makevars都失败了,这只是我最近的一次尝试,试图克服一个加载程序的问题--当它链接armadillo时,它找不到libstdc++。正如您所看到的,它在查找/usr/lib64而不是/opt/lib64。就好像我的-Wl指令被忽略了一样。我运行R作为sudo。”

我的.bashrc还有:

代码语言:javascript
复制
LD_LIBRARY_PATH=/opt/lib64:/opt/lib64/R/library/Rcpp/libs:$LD_LIBRARY_PATH:~/lib:~/perl/lib:~/lib/bamtools

LD_RUN_PATH=/opt/lib64:$LD_RUN_PATH:~/lib

export LD_LIBRARY_PATH 
export LD_RUN_PATH

下面是我试图在R中编译需要重新编译的新包时得到的结果:

代码语言:javascript
复制
    install.packages(onCRAN, lib=lib, repos=rep)
     trying URL 'http://cran.rstudio.com/src/contrib/RcppArmadillo_0.4.000.2.tar.gz'
    Content type 'application/x-gzip' length 892941 bytes (872 Kb)
     opened URL
     ==================================================
     downloaded 872 Kb

     * installing *source* package âRcppArmadilloâ ...
     ** package âRcppArmadilloâ successfully unpacked and MD5 sums checked
     * checking LAPACK_LIBS divide-and-conquer complex SVD unavailable via R-supplied LAPACK
     * divide-and-conquer algorithm for complex SVD will be redirected to default
     ** libs
     /opt/bin/g++ -Wl,-rpath,/opt/lib64 -Wl,-L,/opt/lib64 -Wl,-llibstdc++ -I/opt/lib64/R/include -DNDEBUG  -I/usr/local/include -I"/opt/lib64/R/library/Rcpp/include"  -I../inst/include -fpic  -g -O2  -c RcppArmadillo.cpp -o RcppArmadillo.o
     /opt/bin/g++ -Wl,-rpath,/opt/lib64 -Wl,-L,/opt/lib64 -Wl,-llibstdc++ -I/opt/lib64/R/include -DNDEBUG  -I/usr/local/include -I"/opt/lib64/R/library/Rcpp/include"  -I../inst/include -fpic  -g -O2  -c RcppExports.cpp -o RcppExports.o
     /opt/bin/g++ -Wl,-rpath,/opt/lib64 -Wl,-L,/opt/lib64 -Wl,-llibstdc++ -I/opt/lib64/R/include -DNDEBUG  -I/usr/local/include -I"/opt/lib64/R/library/Rcpp/include"  -I../inst/include -fpic  -g -O2  -c fastLm.cpp -o fastLm.o
     Error in dyn.load(file, DLLpath = DLLpath, ...) : 
       unable to load shared object '/opt/lib64/R/library/Rcpp/libs/Rcpp.so':
       /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/lib64/R/library/Rcpp/libs/Rcpp.so)
     Calls: ::: ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
     Execution halted
     /opt/bin/g++ -Wl,-rpath,/opt/lib64 -Wl,-L,/opt/lib64 -Wl,-llibstdc++ -shared -L/usr/local/lib64 -o RcppArmadillo.so RcppArmadillo.o RcppExports.o fastLm.o -L/opt/lib64/R/lib -lRlapack
 -L/opt/lib64/R/lib -lRblas -lgfortran -lm
     Error in dyn.load(file, DLLpath = DLLpath, ...) : 
       unable to load shared object '/opt/lib64/R/library/Rcpp/libs/Rcpp.so':
       /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by        /opt/lib64/R/library/Rcpp/libs/Rcpp.so)`
     Calls: ::: ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
     Execution halted
     /usr/bin/ld: cannot find -llibstdc++
     collect2: error: ld returned 1 exit status
     make: *** [RcppArmadillo.so] Error 1
     ERROR: compilation failed for package âRcppArmadilloâ
     * removing â/opt/lib64/RcppArmadilloâ

下载的源代码包在

代码语言:javascript
复制
 /tmp/RtmpZty35f/downloaded_packages

警告信息:

代码语言:javascript
复制
In install.packages(onCRAN, lib = lib, repos = rep) :
   installation of package RcppArmadillo had non-zero exit code
EN

回答 1

Stack Overflow用户

发布于 2014-02-11 03:40:50

以下是两个简短的评论:

  1. CXXCXX=/opt/bin/g++ -Wl,-rpath,/opt/lib64 -Wl,-L,/opt/lib64中的定义有点不寻常,因为它混合了链接器指令(对于ld二进制文件)。我会再试一次没有。
  2. 编译RcppArmadillo中的错误没有什么意义,它应该尝试加载libRcpp.so'GLIBCXX_3.4.9' not found建议您可能有一个路径设置。

我会尝试一个更简单的设置,更少的花哨,然后从内到外工作:重建/重新安装Rcpp,然后是RcppArmadillo等等。它适用于许多使用更标准设置的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21597018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档