[Rcpp-devel] Rcpp_0.9.0.tar.gz does not build on FreeBSD

Dirk Eddelbuettel edd at debian.org
Tue Jan 4 16:58:16 CET 2011


On 4 January 2011 at 07:04, Dirk Eddelbuettel wrote:
| On 4 January 2011 at 12:02, Rainer Hurling wrote:
| | On 03.01.2011 13:20 (UTC+1), Dirk Eddelbuettel wrote:
| | As mentioned above build and install are successfull. But testing if 
| | installed package can be loaded fails:
| | 
| | -------------------------------------------
| | [..SNIP..]
| | g++ -shared -L/usr/local/lib -o Rcpp.so Date.o DateVector.o Datetime.o 
| | DatetimeVector.o Dimension.o DottedPair.o Environment.o Evaluator.o 
| | Formula.o Function.o Language.o Module.o Pairlist.o Promise.o RObject.o 
| | RcppCommon.o Rcpp_init.o Reference.o S4.o Symbol.o WeakReference.o 
| | barrier.o cache.o coerce.o complex.o debugging.o exceptions.o posixt.o 
| | r_cast.o
| 
| This line should have   -L/usr/lib64/R/lib -lR   at the end. 
| 
| Odd. Is your R version built as a shared library?
| 
| | g++ -o libRcpp.so Date.o DateVector.o Datetime.o DatetimeVector.o 
| | Dimension.o DottedPair.o Environment.o Evaluator.o Formula.o Function.o 
| | Language.o Module.o Pairlist.o Promise.o RObject.o RcppCommon.o 
| | Rcpp_init.o Reference.o S4.o Symbol.o WeakReference.o barrier.o cache.o 
| | coerce.o complex.o debugging.o exceptions.o posixt.o r_cast.o -shared
| 
| Dito here.
| 
| | ar qc libRcpp.a Date.o DateVector.o Datetime.o DatetimeVector.o 
| | Dimension.o DottedPair.o Environment.o Evaluator.o Formula.o Function.o 
| | Language.o Module.o Pairlist.o Promise.o RObject.o RcppCommon.o 
| | Rcpp_init.o Reference.o S4.o Symbol.o WeakReference.o barrier.o cache.o 
| | coerce.o complex.o debugging.o exceptions.o posixt.o r_cast.o
| | cp libRcpp.so ../inst/lib
| | cp libRcpp.a ../inst/lib
| | rm libRcpp.so libRcpp.a
| | installiert nach /usr/local/lib/R/library/Rcpp/libs
| | ** R
| | ** inst
| | ** preparing package for lazy loading
| | ** help
| | *** installing help indices
| | ** building package indices ...
| | ** testing if installed package can be loaded
| | Error in dyn.load(file, DLLpath = DLLpath, ...) :
| |    kann shared object '/usr/local/lib/R/library/Rcpp/libs/Rcpp.so' nicht 
| | laden:
| |    /usr/local/lib/R/library/Rcpp/libs/Rcpp.so: Undefined symbol 
| | "backtrace_symbols"
| | Fehler: loading failed
| | * removing '/usr/local/lib/R/library/Rcpp'
| | -------------------------------------------
| | 
| | I do not understand why 'backtrace_symbols' is undefined. In 
| | 'src/debugging.cpp' all seems to be ok?
| 
| No, it is a system library function we use. From 'man backtrace_symbol' :
| 
| BACKTRACE(3)                      Linux Programmer's Manual                     BACKTRACE(3)
| 
| NAME
|        backtrace,  backtrace_symbols,  backtrace_symbols_fd  - support for application self-
|        debugging
| 
| SYNOPSIS
|        #include <execinfo.h>
| 
|        int backtrace(void **buffer, int size);
| 
|        char **backtrace_symbols(void *const *buffer, int size);
| 
|        void backtrace_symbols_fd(void *const *buffer, int size, int fd);
| [...]

A quick Google search for 'backtrace_symbols FreeBSD' points to a need for
linking with -lexecinfo

Can you please modify src/Makevars at your end by adding this line right
after the line containing PKG_CPPFLAGS:

PKG_LIB += -lexecinfo


Dirk

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list