[Rcpp-devel] RInside

Romain Francois romain at r-enthusiasts.com
Tue Jul 13 09:13:06 CEST 2010


Le 13/07/10 07:15, David Rosengarten a écrit :
> Sorry, I don't have much experience with actually editing Makefiles.
>   Right now I am using the same Makefile as you have except with the
> final section edited as follows:
>
> ## compiler etc settings used in default make rules
> CXX := $(shell $(R_HOME)/bin/R CMD config CXX)
> CPPFLAGS := -Wall $(shell $(R_HOME)/bin/R CMD config CPPFLAGS)
> CPPFLAGS += -I/usr/include/
> CXXFLAGS := $(RCPPFLAGS) $(RCPPINCL) $(RINSIDEINCL) $(shell
> $(R_HOME)/bin/R CMD config CXXFLAGS)
> LDFLAGS = -s
> LDFLAGS += -lgsl -lgslcblas -lm
>
> LDLIBS := $(RLDFLAGS) $(RBLAS) $(RLAPACK) $(RCPPLIBS) $(RINSIDELIBS)
>
> all : $(programs)
>
> clean:
> rm -vf $(programs)
> rm -f *~ *.o core a.out
>
> runAll:
> for p in $(programs); do echo "Running $$p"; ./$$p; done
>
> However, when I run 'make' it says
>
> make: nothing to be done for 'all'
>
> Any idea how to fix this?  Thanks so much for all of your help.

Maybe running "make clean" first ?

Romain

> Best,
> David
>
> On Mon, Jul 12, 2010 at 9:24 PM, Dirk Eddelbuettel <edd at debian.org
> <mailto:edd at debian.org>> wrote:
>
>
>     David,
>
>     On 12 July 2010 at 20:50, David Rosengarten wrote:
>     | Well I'm not quite sure why it's different for me then, but your
>     theory fixed
>     | it!  This is the result of 'ldd rinside_sample0':
>     |
>     | linux-vdso.so.1 =>  (0x00007fff720dd000)
>     | libR.so => /usr/lib/R/lib/libR.so (0x00007f351598d000)
>
>     Cool. One down. Good to know.
>
>     | libblas.so.3gf => /usr/lib/atlas/libblas.so.3gf (0x00007f3514ff2000)
>     | liblapack.so.3gf => /usr/lib/atlas/liblapack.so.3gf
>     (0x00007f35143ea000)
>     | libRcpp.so => /usr/local/lib/R/site-library/Rcpp/lib/libRcpp.so
>     | (0x00007f3514192000)
>     | libRInside.so =>
>     /usr/local/lib/R/site-library/RInside/lib/libRInside.so
>     | (0x00007f3513f7d000)
>     | libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f3513c68000)
>     | libm.so.6 => /lib/libm.so.6 (0x00007f35139e5000)
>     | libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f35137ce000)
>     | libc.so.6 => /lib/libc.so.6 (0x00007f351344a000)
>     | libgfortran.so.3 => /usr/lib/libgfortran.so.3 (0x00007f351315d000)
>     | libreadline.so.6 => /lib/libreadline.so.6 (0x00007f3512f1c000)
>     | libpcre.so.3 => /lib/libpcre.so.3 (0x00007f3512ced000)
>     | libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x00007f3512adc000)
>     | libz.so.1 => /lib/libz.so.1 (0x00007f35128c5000)
>     | libdl.so.2 => /lib/libdl.so.2 (0x00007f35126c0000)
>     | /lib64/ld-linux-x86-64.so.2 (0x00007f3515f18000)
>     | libncurses.so.5 => /lib/libncurses.so.5 (0x00007f351247d000)
>     |
>     | and the examples run now.  Thanks so much for your help.
>     |
>     | As a further question (sorry for all the trouble), do you know how
>     I can adapt
>     | the makefile so that a program will compile with the gsl
>     libraries?  I tried
>     | adding:
>     |
>     | CFLAGS = -I/usr/include/gsl
>     | LDFLAGS = -lgsl -lgslblasnative
>
>     You want += here to add your values, not = as that would erase prior
>     values.
>     Else use new definitions (eg GSL_CFLAGS) which you later insert into
>     the CXXFLAGS definition.
>
>     | CC = g++
>     | %: %.cpp
>     | $(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
>     |
>     | as well as 'rm -f *~ *.o core a.out' in clean:, but upon 'make' I
>     am getting
>     | the error
>     |
>     | metrop.cpp:14:21: error: RInside.h: No such file or directory
>     | make: *** [metrop] Error 1
>
>     Yes. You effectively everything we need to build with RInside. Not a
>     good plan :)
>
>     | for my program metrop.cpp.  The only thing regarding R that I have
>     in my code
>     | as of now is #include <RInside.h>.
>
>     But that implies Rcpp as well as R so you need headers from three
>     places,
>     libs from three places, rpath entries ... all before you even
>     mentioned GSL.
>
>     Dirk
>
>     | Best,
>     | David
>     |
>     | On Mon, Jul 12, 2010 at 5:38 PM, Dirk Eddelbuettel <edd at debian.org
>     <mailto:edd at debian.org>> wrote:
>     |
>     |
>     |     Hi David,
>     |
>     |     Thanks for hanging in there -- I think you just found a real
>     bug on our
>     |     side!
>     |
>     |     On 12 July 2010 at 17:21, David Rosengarten wrote:
>     |     | The result of sudo apt-get install r-base-core is:
>     |     |
>     |     | Reading package lists... Done
>     |     | Building dependency tree
>     |     | Reading state information... Done
>     |     | r-base-core is already the newest version.
>     |     | r-base-core set to manually installed.
>     |     | The following packages were automatically installed and are
>     no longer
>     |     required:
>     |     |   linux-headers-2.6.32-21-generic linux-headers-2.6.32-21 dkms
>     |     | Use 'apt-get autoremove' to remove them.
>     |     | 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
>     |     |
>     |     | So, it looks like I should already have the shared libraries
>     installed.
>     |      I
>     |     | originally installed the R packages from the Ubuntu Software
>     Center, and
>     |     then I
>     |     | installed Rcpp and RInside using install.packages() in R.
>       Does this
>     |     give any
>     |     | new information, or should I try uninstalling everything and
>     starting
>     |     from
>     |     | scratch?
>     |
>     |     It's perfect. I had to scratch my head for a moment, but then
>     I got an
>     |     idea.
>     |
>     |     Here is the story I currently suspect:
>     |
>     |      1)  r-base-core is built using shared libraries, but these
>     are private
>     |     to R
>     |
>     |      2)  R itself sets a LD_LIBRARY_PATH in the shell script
>     /usr/bin/R so
>     |     all
>     |         is good for normal R use
>     |
>     |      3)  I _used to_ add a file /etc/ld.so.conf.d/libR.conf which
>     made the
>     | 'hidden' location of R visible to the system
>     |
>     |      4)  Unfortunately, this is considered cheating and bad use by the
>     |     so-called
>     |         Debian Policy my Debian R package has to conform to so I
>     had to stop
>     |         that.
>     |
>     |      5)  Because of 3), my systems still have
>     /etc/ld.so.conf.d/libR.conf
>     |     which
>     |         is why 'ldd rinside_sample0' resolves all shared libs for, but
>     |     because
>     |         of 4) you no longer do !
>     |
>     |     To fix this, try placing these two line in a  file
>     /etc/ld.so.conf.d/
>     |     libR.conf
>     |     (without the leading psace, though)
>     |
>     |           # make libR.so visible to ld.so
>     |           /usr/lib/R/lib
>     |
>     |     On amd64, you could also use
>     |
>     |           # make libR.so visible to ld.so
>     |           /usr/lib64/R/lib
>     |
>     |     The run 'sudo ldconfig' and repeat 'ldd rinside_sample0'.  It
>     should now
>     |     find
>     |     libR.so, and if so, you should be able to run all examples.
>     |
>     |     If this hunch is wrong we need to look somewhere else.  If the
>     hunch is
>     |     right, I need to modify the examples so that libR.so gets an Rpath
>     |     invocation
>     |     as we do for libRcpp.so and libRInside.so.
>     |
>     |     Hope this helps,  Dirk
>     |
>     |
>     |
>     |
>     |     |
>     |     | Thanks,
>     |     | David
>     |     |
>     |     | On Mon, Jul 12, 2010 at 4:52 PM, Dirk Eddelbuettel
>     <edd at debian.org <mailto:edd at debian.org>>
>     |     wrote:
>     |     |
>     |     |
>     |     |     David,
>     |     |
>     |     |     Thanks for bringing the discussion here with is more
>     topical for
>     |     Rcpp and
>     |     |     RInside.
>     |     |
>     |     |     On 12 July 2010 at 16:34, David Rosengarten wrote:
>     |     |     | Hi,
>     |     |     |
>     |     |     | I originally emailed the r-sig-debian list and was
>     directed here.
>     |       I
>     |     |     am
>     |     |     | trying to run the examples in
>     /RInside/examples/standard such as
>     |     |     | rinside_sample_0, but I am getting the error:
>     |     |     |
>     |     |     | error while loading shared libraries: libR.so: cannot
>     open shared
>     |     object
>     |     |     file:
>     |     |     | No such file or directory
>     |     |     |
>     |     |     | Does anyone know how to deal with this?  I was told to
>     include
>     |     the
>     |     |     output of
>     |     |     | 'make' and 'ldd ./rinside_sample0', so they are as
>     follows:
>     |     |     |
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample0.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample0
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample1.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample1
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample2.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample2
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample3.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample3
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample4.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample4
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample5.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample5
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample6.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample6
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample7.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample7
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_sample8.cpp
>     |     |     |  -L/usr/lib64/R/lib -lR -lblas -llapack
>     -L/usr/local/lib/R/
>     |     site-library/
>     |     |     Rcpp/
>     |     |     | lib -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/
>     |     usr/local
>     |     |     /lib/R
>     |     |     | /site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_sample8
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_test0.cpp  -L
>     |     |     | /usr/lib64/R/lib -lR -lblas -llapack -L/usr/local/lib/R/
>     |     site-library/Rcpp
>     |     |     /lib
>     |     |     | -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/usr/
>     |     local/lib
>     |     |     /R/
>     |     |     | site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_test0
>     |     |     | g++ -I/usr/share/R/include
>     -I/usr/local/lib/R/site-library/Rcpp/
>     |     include
>     |     |     -I/usr/
>     |     |     | local/lib/R/site-library/RInside/lib -g -O2 -Wall  -s
>     |     |      rinside_test1.cpp  -L
>     |     |     | /usr/lib64/R/lib -lR -lblas -llapack -L/usr/local/lib/R/
>     |     site-library/Rcpp
>     |     |     /lib
>     |     |     | -lRcpp
>     -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/usr/
>     |     local/lib
>     |     |     /R/
>     |     |     | site-library/RInside/lib -lRInside
>     -Wl,-rpath,/usr/local/lib/R/
>     |     |     site-library/
>     |     |     | RInside/lib -o rinside_test1
>     |     |     |
>     |     |     | linux-vdso.so.1 =>  (0x00007fff30bff000)
>     |     |     | libR.so => not found
>     |     |     | libblas.so.3gf => /usr/lib/atlas/libblas.so.3gf
>     |     (0x00007f50d2512000)
>     |     |     | liblapack.so.3gf => /usr/lib/atlas/liblapack.so.3gf
>     |     (0x00007f50d190a000)
>     |     |     | libRcpp.so =>
>     /usr/local/lib/R/site-library/Rcpp/lib/libRcpp.so
>     |     |     | (0x00007f50d16b2000)
>     |     |     | libRInside.so =>
>     /usr/local/lib/R/site-library/RInside/lib/
>     |     libRInside.so
>     |     |     | (0x00007f50d149d000)
>     |     |     | libstdc++.so.6 => /usr/lib/libstdc++.so.6
>     (0x00007f50d1188000)
>     |     |     | libm.so.6 => /lib/libm.so.6 (0x00007f50d0f05000)
>     |     |     | libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f50d0cee000)
>     |     |     | libc.so.6 => /lib/libc.so.6 (0x00007f50d096a000)
>     |     |     | libgfortran.so.3 => /usr/lib/libgfortran.so.3
>     |     (0x00007f50d067d000)
>     |     |     | /lib64/ld-linux-x86-64.so.2 (0x00007f50d2ecd000)
>     |     |     | libR.so => not found
>     |     |     | libR.so => not found
>     |     |
>     |     |     There is your problem.
>     |     |
>     |     |     | I have R and r-base-dev installed, so I don't
>     understand why this
>     |     is
>     |     |     happening.
>     |     |     |  Any help would be much appreciated.
>     |     |
>     |     |     You may have R, but I suspect you do not have R built
>     with shared
>     |     |     libraries.
>     |     |     The quickest fix, given that you started on
>     r-sig-debian, may be
>     |     |
>     |     |        $ sudo apt-get install r-base-core
>     |     |
>     |     |     Else you can of course rebuild R from source etc, but
>     you have to
>     |     tell
>     |     |     configure to use   --enable-R-shlib     or else you
>     cannot embed
>     |     R. And
>     |     |     RInside wants to embed R, so you can't the latter witout the
>     |     former.
>     |     |
>     |     |     Hope this helps.
>     |     |
>     |     |     --
>     |     |      Regards, Dirk
>     |     |
>     |     |
>     |     |
>     |     |
>     ----------------------------------------------------------------------
>     |     | _______________________________________________
>     |     | Rcpp-devel mailing list
>     |     | Rcpp-devel at lists.r-forge.r-project.org
>     <mailto:Rcpp-devel at lists.r-forge.r-project.org>
>     |     |
>     https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>     |
>     |     --
>     |      Regards, Dirk
>     |
>     |
>
>     --
>       Regards, Dirk
>
>
>
>
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel


-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://bit.ly/bc8jNi : Rcpp 0.8.4
|- http://bit.ly/dz0RlX : bibtex 0.2-1
`- http://bit.ly/a5CK2h : Les estivales 2010



More information about the Rcpp-devel mailing list