簡體   English   中英

Rcpp找不到gsl庫

[英]Rcpp cannot find gsl library

我的想法

我試圖為R創建一個庫,但我無法加載它。

我得到的錯誤是

Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/home/stenver/R/x86_64-pc-linux-gnu-    library/2.15/RcppWilcoxonTest/libs/RcppWilcoxonTest.so':
  /home/stenver/R/x86_64-pc-linux-gnu-library/2.15/RcppWilcoxonTest/libs/RcppWilcoxonTest.so:     undefined symbol: gsl_cdf_gaussian_Q
Error: loading failed

我的Makevars文件如下所示:

PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()" `

我試過改變那里的各種東西。

我的NAMESPACE文件如下所示:

useDynLib(RcppWilcoxonTest)
useDynLib(gsl)
useDynLib(WilcoxonTest)

import(Rcpp)

export(RcppWilcoxonTest)

失敗發生在我試圖使用的動態共享庫中。 我已將動態庫文件復制到src文件夾,因此R會自行編譯它們,但它沒用。 理想情況下,我想將庫和Rcpp接口實現保存在單獨的文件夾中。

在某些時候,我也嘗試使用RcppGSL,但它沒有幫助,因為R在安裝后無法找到包。

整個存儲庫可以在這里看到:

https://bitbucket.org/stenver/wilxoni-astaku-test/src/8c9b5da2cd9a97fd6c1a569e468c50ca95e2e06f?at=default

在RcppWilcoxonTest文件夾中

您需要在src/Makevars文件中使用以下內容; 那是(借用RcppGSL如何做事):

PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"` `gsl-config --libs`

所以R知道在編譯包時需要鏈接GSL。 有關詳細信息,請參閱R-exts

您可以通過檢查RcppGSL如何配置以查找GSL來學習很多東西,並在您的包中使用類似的方法。

凱文的回答可能會對你有所幫助,但實際上有一個CRAN包明確依賴於RcppGSL,其中我做了

edd@max:~/git/rcppziggurat/src$ cat Makevars
PKG_CPPFLAGS = -I. -I../inst/include
## Use the R_HOME indirection to support installations of multiple R version
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"` \
           `$(R_HOME)/bin/Rscript -e "RcppGSL:::LdFlags()"`
edd@max:~/git/rcppziggurat/src$ 

我在這里為顯示包裹了一行。

本質上,RcppGSL調用Kevin提到的相同gsl-config

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM