[Rcpp-devel] RInside
David Rosengarten
save.of.ten at gmail.com
Tue Jul 13 07:15:38 CEST 2010
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.
Best,
David
On Mon, Jul 12, 2010 at 9:24 PM, Dirk Eddelbuettel <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>
> 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
> >
> | 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
> | |
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
> |
> | --
> | Regards, Dirk
> |
> |
>
> --
> Regards, Dirk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20100713/b717b1a8/attachment-0001.htm>
More information about the Rcpp-devel
mailing list