2014-02-06 60 views
3

在我的Linux集群上,我遇到了重编译R包需要重新编译 并删除了libRcpp.so的最新版本。最终目标是 以运行R包DEseq2。我们在/opt/bin目录中安装了g ++的新版本 ,在/opt/lib64中有新库。我已经 也创造.R/Makevars具有这些指令:R重编译包失败,因为失败

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失败的各种版本,这只是我的最新尝试 克服它没有找到的libstdC++,当它连接 犰狳装载机问题正如你所看到的,它是在寻找/usr/lib64代替 /opt/lib64。这是因为如果我的-Wl指令被忽略。我 运行R作为sudo的。

也是我的.bashrc有:

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中编译新的软件包需要重新编译 :


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â 

下载的源码包在

/tmp/RtmpZty35f/downloaded_packages 

警告消息:

In install.packages(onCRAN, lib = lib, repos = rep) : 
    installation of package RcppArmadillo had non-zero exit code 

回答

0

两个快速评论:

  1. CXX=/opt/bin/g++ -Wl,-rpath,/opt/lib64 -Wl,-L,/opt/lib64中的CXX定义是一点点,啊哈,不寻常,因为它混合连接说明书(用于ld二进制)。我会再试一次。

  2. 编译RcppArmadillo的错误没有多大意义,它应该尝试加载libRcpp.so。并'GLIBCXX_3.4.9' not found建议您可能有一个路径设置。

我想尝试一个更简单的设置,少了许多,然后从内到外的工作:重建/重新RCPP,然后RcppArmadillo等。它适用于许多使用更多标准设置的人。