2012-12-04 26 views
3

當我嘗試編譯任何代碼時,出現以下錯誤消息碼。下面是一個示例和sessionInfo()的輸出。該示例曾用於工作,但我遇到了RcppArmadillo的問題。所以我安裝了HPC版本的gfortran編譯器,這是一個錯誤。當我試圖編譯某些東西時,R剛崩潰(CRAN也警告HPC版本)。最後,我在CRAN here上安裝了該版本,但現在任何撥打電話cppFunctionsourceCpp都會產生下面的錯誤。我已經嘗試卸載gfortran,R,Rcpp並再次安裝它們。同樣的錯誤。 gfortran -v的輸出有點混亂。有任何想法嗎?

實施例代碼

require("Rcpp") 
cppFunction(' 
    int add(int x, int y, int z) { 
     int sum = x + y + z; 
     return sum; 
    }' 
) 

錯誤消息

Error in dyn.load(context$dynlibPath) : 
    unable to load shared object '/var/folders/cc/_mskgpdd6f77hrg4rsp4zq1h0000gq/T//RtmpHRb5JV/sourcecpp_24fb5226c6fc/sourceCpp_96369.so': 
    dlopen(/var/folders/cc/_mskgpdd6f77hrg4rsp4zq1h0000gq/T//RtmpHRb5JV/sourcecpp_24fb5226c6fc/sourceCpp_96369.so, 6): Symbol not found: ___emutls_get_address 
    Referenced from: /usr/local/lib/libstdc++.6.dylib 
    Expected in: /usr/local/lib/libgcc_s.1.dylib 
in /usr/local/lib/libstdc++.6.dylib 

從會話信息輸出

R version 2.15.2 (2012-10-26) 
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] Rcpp_0.10.1  boot_1.3-7  xtable_1.7-0  stringr_0.6.1 
[5] mi_0.09-18  arm_1.5-08  abind_1.4-0  R2WinBUGS_2.1-18 
[9] coda_0.14-7  lme4_0.999999-0 Matrix_1.0-9  lattice_0.20-10 
[13] car_2.0-15  nnet_7.3-5  MASS_7.3-22  plyr_1.7.1  
[17] foreign_0.8-51 

loaded via a namespace (and not attached): 
[1] grid_2.15.2 nlme_3.1-105 stats4_2.15.2 tools_2.15.2 

版本的編譯器

> gcc -v 
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) 
> gfortran -v 
Using built-in specs. 
Target: i686-apple-darwin8 
Configured with: /Builds/unix/gcc/gcc-4.2/configure --prefix=/usr/local --mandir=/share/man --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --build=i686-apple-darwin8 --host=i686-apple-darwin8 --target=i686-apple-darwin8 --enable-languages=fortran 
Thread model: posix 
gcc version 4.2.3 
+1

你可以編譯一些沒有'Rcpp'的東西。例如,當你在'inline'包中運行'?cfunction'中的代碼時會發生什麼? –

+0

和/或當您嘗試編譯C語言中的三個班輪時,使用C++,...?你可能只是簡單地炸燬了你的工具鏈。 –

+0

''cfunction'中'簡單的Fortran示例'的Romain工作正常,但「使用C代碼的.C約定」和「使用'setCMethod'的替代聲明不起作用。順便說一句,我也安裝了Xcode命令行工具。 Dirk,我會盡力回覆... – user2503795

回答

1

的不知怎的,我結束了在/usr/local/lib版本的libstdc++.6.dylib。當我使用Rcpp或內聯編譯某些代碼併產生錯誤時,會收到此版本。它似乎覆蓋了/usr/lib中的系統版本。目前,我剛剛更名爲/usr/local/lib/libstdc++.6.dylib.../libstdc++.6-SAVE。我不確定這是否會產生其他問題,但Rcpp再次運行,並且?cfunction示例也可以使用!

編輯:它實際上仍然搞砸了。以下是解決當前R會話問題的步驟。 1)用/usr/local/lib/libstdc++.6.dylib不變地啓動R,2)重命名/usr/local/lib/libstdc++.6.dylib,3)愉快地使用Rcpp。現在,當我重新啓動R時,仍然收到舊的錯誤消息。我必須再次通過這三個步驟才能在目前的R會議中工作。

+0

你可以看看我的問題http://stackoverflow.com/questions/15101667/error-from-cppfunctionrcpp-under-r-15-2?我有一些類似的錯誤 – Qbik

相關問題