【发布时间】:2016-06-08 14:10:44
【问题描述】:
我试图在 R 中运行这种和平的代码(感谢 the author):
require(Rcpp)
require(RcppArmadillo)
require(inline)
cosineRcpp <- cxxfunction(
signature(Xs = "matrix"),
plugin = c("RcppArmadillo"),
body='
Rcpp::NumericMatrix Xr(Xs); // creates Rcpp matrix from SEXP
int n = Xr.nrow(), k = Xr.ncol();
arma::mat X(Xr.begin(), n, k, false); // reuses memory and avoids extra copy
arma::mat Y = arma::trans(X) * X; // matrix product
arma::mat res = (1 - Y / (arma::sqrt(arma::diagvec(Y)) * arma::trans(arma::sqrt(arma::diagvec(Y)))));
return Rcpp::wrap(res);
')
经过几次修复后,出现以下错误:
Error in compileCode(f, code, language = language, verbose = verbose) :
Compilation ERROR, function(s)/method(s) not created!
clang: error: no such file or directory: '/usr/local/lib/libfontconfig.a'
clang: error: no such file or directory: '/usr/local/lib/libreadline.a'
make: *** [file5a681e35ebe1.so] Error 1
In addition: Warning message:
running command '/Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB file5a681e35ebe1.cpp 2> file5a681e35ebe1.cpp.err.txt' had status 1
我过去经常使用 Rcpp。但是从现在到现在,我的计算机已经重新格式化,并且所有安装都使用自制软件重新完成。
我用 brew 安装了cairo:brew install cairo
libreadline.a 错误已通过以下方式解决:
brew link --force readline
但是对于libfontconfig.a,同样的方法不起作用,因为它已经被链接了:
brew link --force fontconfig
Warning: Already linked: /usr/local/Cellar/fontconfig/2.11.1
To relink: brew unlink fontconfig && brew link fontconfig
我会假设fontconfig 在cairo 内。事实上,当我输入
brew install fontconfig
Warning: fontconfig-2.11.1 already installed
但事实是/usr/local/lib/ 上没有libfontconfig.a:
ls /usr/local/lib/libfont*
/usr/local/lib/libfontconfig.1.dylib
/usr/local/lib/libfontconfig.dylib
使用非常可疑的方法去here并下载它,代码运行,但仍然给出相应的警告,因为该文件对应于不同的os.x架构(我没有找到10.9的):
+ . + ld: warning: ignoring file /usr/local/lib/libfontconfig.a, missing required architecture x86_64 in file /usr/local/lib/libfontconfig.a (2 slices)
所以在这个阶段我有点迷茫。
如何安装libfontconfig.a或找到10.9版本?
如果有任何用处,我已经安装了 Xcode,我在 Mac 10.9.5 上,
并基于this 非常好的和详细的答案,我的~/.R/Makevars 文件看起来像:
CC=clang
CXX=clang++
FLIBS=-L/usr/local/bin/
【问题讨论】:
-
我找到了这个链接:github.com/olarivain/iTunesServer/blob/master/libraries/…,这里的文件有效。不过,我很想知道是否可以直接使用 Homebrew 安装。