Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译任何代码时的Rcpp错误消息:`dyn.load中的错误(上下文$dynlibPath):无法加载共享对象';。。。sourceCpp_96369.so'`_R_Rcpp - Fatal编程技术网

编译任何代码时的Rcpp错误消息:`dyn.load中的错误(上下文$dynlibPath):无法加载共享对象';。。。sourceCpp_96369.so'`

编译任何代码时的Rcpp错误消息:`dyn.load中的错误(上下文$dynlibPath):无法加载共享对象';。。。sourceCpp_96369.so'`,r,rcpp,R,Rcpp,当我试图编译任何代码时,我得到下面的错误消息。下面是一个示例和来自sessionInfo()的输出。这个例子过去很有效,但我在使用RcppArmadillo时遇到了问题。因此,我安装了gfortran编译器的for-HPC版本,这是一个错误。R在我试图编译某些东西时崩溃了(CRAN还警告HPC版本)。最后,我在CRAN上安装了这个版本,但是现在任何对cppFunction或sourceCpp的调用都会产生下面的错误。我已经尝试卸载gfortran、R、Rcpp并再次安装它们。同样的错误。gfor

当我试图编译任何代码时,我得到下面的错误消息。下面是一个示例和来自
sessionInfo()
的输出。这个例子过去很有效,但我在使用
RcppArmadillo
时遇到了问题。因此,我安装了
gfortran
编译器的for-HPC版本,这是一个错误。R在我试图编译某些东西时崩溃了(CRAN还警告HPC版本)。最后,我在CRAN上安装了这个版本,但是现在任何对
cppFunction
sourceCpp
的调用都会产生下面的错误。我已经尝试卸载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
错误消息

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

不知怎的,我在
/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
开始,2)重命名
/usr/local/lib/libstdc++.6.dylib
,3)愉快地使用
Rcpp
。但是,当我现在重新启动R时,仍然会收到旧的错误消息。我必须再次完成这三个步骤,才能使它在当前的R会话中正常工作。

你能在没有
Rcpp
的情况下编译一些东西吗。例如,当您在<代码>?cObjy<代码>中运行代码时,从<代码>内联< /COD>包中,和/或当您尝试在C中编译三个内衬,C++中,…?您可能只是永久地破坏了您的工具链。Romain,
中的
简单Fortran示例
?C函数
起作用,但是
使用.C约定和C代码
以及使用“setCMethod”的
替代声明不起作用。顺便说一下,我还安装了Xcode命令行工具。Dirk,我会努力回去……是的,我可以编译一个简单的“Halo Work”程序,在C和C++中…也许还有希望?你能看看我的问题吗?我也有类似的错误