2014-01-29 70 views
3

im想法Rcpp無法找到gsl庫

我試圖爲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()" ` 

我試圖改變各種各樣的東西在裏面。

我的空間文件看起來是這樣的:

未能在動態共享庫我試圖使用情況。我已經將動態庫文件複製到src文件夾,所以R會自己編譯它們,但它是沒用的。理想情況下,我想將庫和Rcpp接口實現保存在一個單獨的文件夾中。

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

整個倉庫可以在這裏看到:

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

在RcppWilcoxonTest文件夾

+0

爲什麼我得到一個downvote? – user1047833

回答

3

你需要的東西就像你src/Makevars文件中的以下;即(取法RcppGSL如何做的事情):

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

中以r知道它需要編譯你的包時對GSL鏈接。有關更多詳細信息,請參閱R-exts

您可以通過檢查如何配置RcppGSL來查找GSL並在包中使用類似方法來了解很多。

+1

非常好,但我們可以做得更好。 –

+0

我收到了一個錯誤:library.dynam(lib,package,package.lib): 未找到共享對象'gsl.so'。我已安裝gsl-dev。我的意思是 - 我正在用GSL製作圖書館。我完全按照您的說法複製了內容,並在其中放入了「PKG_CPPFLAGS = -I。-I ../ inst/include 」 – user1047833

+0

也許http://r.789695.n4.nabble.com/Trouble-installing-gsl -wrapper-td3020005.html將提供信息。 –

3

凱文的答案可能會幫助你,但其實也有一個CRAN軟件包明確依賴於RcppGSL,並在它我

[email protected]:~/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()"` 
[email protected]:~/git/rcppziggurat/src$ 

,我裹着一條線的顯示在這裏。

實質上,RcppGSL調用與Kevin相同的。

+0

我試過凱文和你的。在你的情況下,它只是說:在從RcppWilcoxonTest.cpp包括的文件中:1:0: ./WilcoxonTest.h:10:21:致命錯誤:RcppGSL.h:沒有這樣的文件或導演。我完全按照你所說的做了Makevars,試着摸索着他們。我也嘗試將導入(RcppGSL)放到NAMESPACE文件中。而且我也嘗試將RcppGSL作爲依賴項放在NAMESPACE文件中。 – user1047833

+1

我需要與-I和-L標誌做些什麼,如果你無法掌握這些,請學習一些簡單的東西。我在Rcpp書的第2章的一個例子中慢慢詳細地介紹了這一點。 –

+0

好的,謝謝,我會看看他們,但我相信我知道他們的意思。不幸的是,我的要求是將它與R集成在一起。當你在cpp編譯時最好是初學者時,並不是最簡單的任務,但我會想出一些東西。我也考慮訂購這本書 – user1047833