ソースからパッケージをインストールできるように、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をインストールしました Rcpp
とRcppArmadillo
パッケージをRにインストールしました- また、フォルダーの内容をフォルダー
include
からフォルダーRcppArmadillo
にコピーしようとしましたが(ここで提案されているように)、C++ コードをコンパイルしようとすると、引き続きエラーが発生しました (別のエラーではありますが)。include
Rcpp
- 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