我最近“升级”到XCode 5.2,现在许多R包都无法使用。我有一个15“MBP运行OSX Mavericks 10.9.1并运行R 3.0.2。
首先,包diversitree中的mcmc函数崩溃并出现以下错误:
Error in .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x0>, :
NULL value passed as symbol address
此外,我无法从源代码编译包“geomorph”,我收到以下错误:
clang: error: no such file or directory: 'SHLIB_LIBADD'
clang: error: no such file or directory: '='
make: *** [geomorph.so] Error 1
ERROR: compilation failed for package ‘geomorph’
所以我认为错误在编译器中的某个地方。我测试了这个想法:
> require(Rcpp)
> evalCpp("1+1")
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -I"/Users/Chris/Library/R/3.0/library/Rcpp/include" -fPIC "-mtune=native -g -O2 -Wall -pedantic -Wconversion" -c file177c642d0b53.cpp -o file177c642d0b53.o clang++ -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -L/usr/local/lib -o sourceCpp_1783.so file177c642d0b53.o /Users/Chris/Library/R/3.0/library/Rcpp/lib/libRcpp.a SHLIB_LIBADD = -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = showOutput, :
Error 1 occurred building shared library.
WARNING: The tools required to build C++ code for R were not found.
Please install Command Line Tools for XCode (or equivalent).
clang: error: no such file or directory: 'SHLIB_LIBADD'
clang: error: no such file or directory: '='
make: *** [sourceCpp_1783.so] Error 1
还有:
has_devel()
'/Library/Frameworks/R.framework/Resources/bin/R' --vanilla \
CMD SHLIB foo.c
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -fPIC "-mtune=native -g -O2 -Wall -pedantic -Wconversion" -c foo.c -o foo.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -L/usr/local/lib -o foo.so foo.o SHLIB_LIBADD = -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
clang: error: no such file or directory: 'SHLIB_LIBADD'
Error: Command failed (1)
clang: error: no such file or directory: '='
make: *** [foo.so] Error 1
我尝试从源代码重新安装Rcpp,但也失败了:
clang: error: no such file or directory: 'SHLIB_LIBADD'
clang: error: no such file or directory: '='
make: *** [Rcpp.so] Error 1
我花了几个小时试图对此进行故障排除,并且我遇到了许多编辑Makeconf文件以添加clang的提及。我已经做到了这一点,但仍然无法使用R中的C来工作。我非常感谢任何帮助。
答案 0 :(得分:1)
您使用的是CRAN提供的R二进制文件,还是您自己编译的R版本?您是否使用新的XCode编译器或旧编译器编译R?
我的经验是CRAN-R可以与特定的编译器工具链一起使用,只要你为编译的所有软件包使用相同的工具链即可。例如,如果您尝试将new-XCode编译的包链接到旧的XCode编译的Rcpp,则会遇到问题。
据我所知,您的SHLIB_LIBADD
错误表示您在Makevars
或Makeconf
中做了一些奇怪的事情,现在解析文件时出错了。我很想知道你是否可以用一个新的,CRAN提供的R来重现这个。
如果您尝试重新安装R +所有软件包,是否可以重现此问题?您应该尝试使用新的库目录重新安装R,然后重新安装这些有问题的软件包,并从那里开始。