[Rcpp-devel] Rcpp_0.9.0.tar.gz does not build on FreeBSD
Rainer Hurling
rhurlin at gwdg.de
Tue Jan 4 18:24:42 CET 2011
On 04.01.2011 14:04 (UTC+1), Dirk Eddelbuettel wrote:
>
> On 4 January 2011 at 12:02, Rainer Hurling wrote:
> | On 03.01.2011 13:20 (UTC+1), Dirk Eddelbuettel wrote:
> |> Rainer,
> |>
> |> Please use the rcpp-devel list for questions. You need to subscribe to post,
> |> or you can use a web-to-list interface to gmane.org.
> |
> | Done. Hope it is ok to pursue the private thread on the list.
>
> That's perfect.
>
> |> | It seems that 'src/Makevars' is not fully compatible to FreeBSD style
> |>
> |> Hm. Can you try enforcing GNU make via something like
> |>
> |> export MAKE=/usr/bin/gmake
> |
> | Thanks for the tip. With gmake it proceeds build and installing. But
>
> Good. We are actually trying to not depend on GNU make so you found an
> infelicity which I may correct by ...
Nice.
> | there is another problem with testing the installation, see below please.
> |
> |> (or whererever it it stored on your system). At that point the implicit
> |> variable $^ is used:
> |>
> |> $(SHLIB_CXXLD) -o $(USERLIB) $^ $(SHLIB_CXXLDFLAGS) $(ALL_LIBS)
> |>
> |> Here $^ expands to the list of all prerequisites, so you could try $OBJECTS
> |> in its place.
> |
> | gmake is able to use $^, so there is no need for me to use $OBJECTS :-)
>
> ... switching to $OBJECT in place of $^ here.
>
> | 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.
There is no /usr/lib64/R/lib on FreeBSD, instead it is located under
/usr/local/lib/R/lib.
> Odd. Is your R version built as a shared library?
I think so but I am not sure. Is there any quick test?
> | 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' :
Ok, I see. I will answer some more about backtrace_symbol in my next
posting ...
> 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);
> [...]
>
> | I tried to comment out the complete part between '#if defined(__GNUC__)'
> | and '#endif' and use only
> |
> | SEXP stack_trace( const char *file, int line) {
> | return R_NilValue ;
> | }
> |
> | That gives no more undefined symbols when loading, but of course there
> | is no debugging code any more :-(
> |
> | Do you have any idea how to get debugging.cpp functional on FreeBSD?
>
> Well, not to put too fine a point on it: that's your job. Your operating
> system choice, your need. We may give you the Windows behaviour (ie no
> debugging trace) so that this builds on your system but we have no access to
> *BSD and no particular desire to add this feature. If you only want to run
> parser and highlight (as per your first mail) then you do not need more.
Until now I have no need for the debugging functionality. That depends
on packages which will need it.
> Otherwise, Romain may of course be available for contracting. If you or
> someone else needs this feature on what happens to be a non-standard
> platform, you may have to provide the (financial) resources to make it
> happen.
>
> Cheers, Dirk
More information about the Rcpp-devel
mailing list