1

ソースからパッケージをインストールできるように、R で C++ コードをコンパイルしようとしています。Mac OS X Catalina (10.15.6) で R 4.0.2 を実行しています。Mac OS にR コンパイラ ツールをインストールする手順はこちらです。Rcppただし、指示に従っていると、次の C++ コードを R でコンパイルしようとするとエラーが発生します (名前を付けて保存/Users/itpetersen/Desktop/helloworld.cpp)。

#include <RcppArmadillo.h>   

// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
void hello_world() {
  Rcpp::Rcout << "Hello World!" << std::endl;  
}

// After compile, this function will be immediately called using
// the below snippet and results will be sent to the R console.

/*** R
hello_world() 
*/

上記の C++ コードを R でコンパイルしようとすると、次のエラーが表示されます。

> Rcpp::sourceCpp('/Users/itpetersen/Desktop/helloworld.cpp')
helloworld.cpp:1:10: fatal error: 'RcppArmadillo.h' file not found
#include <RcppArmadillo.h>   
         ^~~~~~~~~~~~~~~~~
1 error generated.
make: *** [helloworld.o] Error 1
clang++ -mmacosx-version-min=10.13 -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG   -I"/Library/Frameworks/R.framework/Packages/Rcpp/include" -I"/Users/itpetersen/Desktop" -I/usr/local/include   -fPIC  -Wall -g -O2  -c helloworld.cpp -o helloworld.o
Error in Rcpp::sourceCpp("/Users/itpetersen/Desktop/helloworld.cpp") : 
  Error 1 occurred building shared library.

mirtソースからパッケージをコンパイルしようとすると、次のエラーも表示されます。

> install.packages("mirt", type = "source")
Installing package into ‘/Library/Frameworks/R.framework/Packages’
(as ‘lib’ is unspecified)
trying URL 'https://cran.r-project.org/src/contrib/mirt_1.32.1.tar.gz'
Content type 'application/x-gzip' length 811759 bytes (792 KB)
==================================================
downloaded 792 KB

* installing *source* package ‘mirt’ ...
** package ‘mirt’ successfully unpacked and MD5 sums checked
** using staged installation
** libs
clang++ -mmacosx-version-min=10.13 -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I'/Library/Frameworks/R.framework/Packages/Rcpp/include' -I'/Library/Frameworks/R.framework/Packages/RcppArmadillo/include' -I/usr/local/include   -fPIC  -Wall -g -O2  -c Estep.cpp -o Estep.o
In file included from Estep.cpp:1:
In file included from ./Misc.h:4:
In file included from /Library/Frameworks/R.framework/Packages/RcppArmadillo/include/RcppArmadillo.h:31:
/Library/Frameworks/R.framework/Packages/RcppArmadillo/include/RcppArmadilloForward.h:26:10: fatal error: 'RcppCommon.h' file not found
#include <RcppCommon.h>
         ^~~~~~~~~~~~~~
1 error generated.
make: *** [Estep.o] Error 1
ERROR: compilation failed for package ‘mirt’
* removing ‘/Library/Frameworks/R.framework/Packages/mirt’
Warning in install.packages :
  installation of package ‘mirt’ had non-zero exit status

The downloaded source packages are in
    ‘/private/var/folders/p5/tkdpnffs2_g5ybr2t1yq1nd0rq_9pt/T/RtmpHLa2q1/downloaded_packages’

これが私がやったことです:

  • 次のファイルを削除しました。~/.R/Makevars
  • 次のファイルを削除しました。~/.Renviron
  • Xcodeバージョン11.6をインストールしました
  • ターミナルXcodeに入力してインストールを確認しました。gcc --version出力は次のとおりです。
gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.3 (clang-1103.0.32.62)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  • ここgfortranからバージョン8.2をインストールしました
  • RcppRcppArmadilloパッケージをRにインストールしました
  • また、フォルダーの内容をフォルダーincludeからフォルダーRcppArmadilloにコピーしようとしましたが(ここで提案されているように)、C++ コードをコンパイルしようとすると、引き続きエラーが発生しました (別のエラーではありますが)。includeRcpp
  • StackOverflow hereに関する同様の質問に対する解決策も試しましたが、問題は解決しませんでした。他の質問よりも新しいバージョンの R を使用しているため、私の質問は重複した質問と見なされるべきではないことに注意してください。

ここに私のセッション情報があります:

> sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.6

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

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] RcppArmadillo_0.9.900.2.0 Rcpp_1.0.5               

loaded via a namespace (and not attached):
[1] compiler_4.0.2 tools_4.0.2    tinytex_0.25   xfun_0.16
4

0 に答える 0